﻿/*
知识选择器
 scope.knowConfig = {   // 配置知识选择器的参数
                 menu: ["structure", "courseware", "file", "folder","examination","externalpaper","question","taskStructure","trainingTask","certificate","qunaire","base","class"],    //知识结构 课程 文件 文件夹 试卷 题库 任务中的知识结构 任务 证书 问卷 基地 班级
                 windowSize:"standard", //  窗口类型 standard:标准(默认:不传)  mini :迷你
                 kssMore:false,     //知识结构 是否多选  默认单选(不传为单选)
                 kssList:[],            // 知识结构选中列表
                 kstMore:false,     // 任务中的知识结构是否多选
                 kstList:[],        // 任务中的知识结构选中列表
                 kscMore:false,    //课程   是否多选  默认单选(不传为单选)
                 kscList:[],            //课程选中列表
                 kseMore:true,  // 试卷列表是否多选
                 kseList:[], // 试卷选中列表
                 expMore:true,  // 外部试卷列表是否多选
                 expList:[], // 外部试卷选中列表
                 ksfMore:true, //文件是否多选
                 ksfList:[], // 文件列表
                 ksfType:0, // 文件类型 默认空  0 全部  1 文档 2 视频
                 ksmMore:false, // 文件夹 是否多选
                 ksmList:[],    // 文件夹列表
                 ksqMore:false, //题库 是否多选（默认单选）
                 ksqList:[],    // 题库列表
                 ksrMore:false, // 任务 是否多选（默认单选）
                 ksrList:[],    // 任务列表
                 cerMore:false,//证书 是否多选
                 cerList:[],//证书列表
                 qunaireMore:true,  // 问卷列表是否多选
                 qunaireList:[], // 问卷选中列表
                 baseMore:false,//基地 是否多选
                 baseList:[],//基地列表
                 classMore:false,//基地 是否多选
                 classList:[],//基地列表
                 liveMore:false,//直播 是否多选
                 liveList:[],//直播列表
                 isShow:false,  // 显示知识选择器
                 callbackParams:{   //回调操作型参数 选择填写参数   配合回调方法使用
                    isClose:true,              // 1.窗口的关闭方式（true关闭按扭，或者选中关闭 建议：针对单选使用可优化回调方法中请求服务器的次数）      
                                                         2.对象中必填参数 默认传true  
                 }
             };
onCallback 回调方法（选填写）：1.可选传入任意参数 （包括父域的参数）
                                                  2.一般如果出现回调后双向绑定的参数没有进行数据同步 可把父域要同步的参数传入进行强制同步
注意： 1.此选择器使用了ng-if 的显示隐藏方法这样可以保存用户在点击时进行加载数据，不然会导致用户在调用时进行加载数据浪费资源
           2.用ng-if 之后会 继承父域，且新建独立作用域  所以如果传对象的时候要把整个对象传入实现数据的双向绑定 
           如果只传入对象的属性进行双向绑定则父作用域得不到修改后的值
*/
//
angular.module('knowledgeSelector', ['ui.tree', 'checklist-model', 'dropdownApp', 'Common', 'loadModule', 'knowledgebaseS', 'knowledgeStructureModelAddEdit'])
/*******************************************开始*********************************************/
 .directive("knowledgeSelector", ["$rootScope", "$stateParams", "$timeout", "Comm", "T", function ($rootScope, $stateParams, $timeout, Comm, T) {
     return {
         restrice: "AE",
         //replace: true,  // 替换原来的html 保证根元素所以不能替换
         scope: {
             isShow: "=",    //是否显示出来这个内容  暂停使用此参数
             knowConfig: "=", // 配置参数
             onCallback: "&"      //回调接口方便用户回调关闭后有其他的操作                     
         },
         templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector.html",
         link: function (scope, element, attr) {
             //初始化菜单导航            
             scope.init = function () {
                 scope.menuList = []; // 菜单   
                 // 初始化选项卡的内容
                 scope.structureTabShow = false;        // 知识结构
                 scope.taskStructureTabShow = false;        // 任务中知识结构
                 scope.coursewareTabShow = false;    // 课程
                 scope.fileTabShow = false;                 // 文件
                 scope.folderTabShow = false;            // 文件夹
                 scope.examinationTabShow = false;  // 试卷
                 scope.externalpaperTabShow = false;  // 外部试卷
                 scope.questionTabShow = false; // 题库
                 scope.taskTabShow = false; // 任务
                 scope.certificateTabShow=false;//证书
                 scope.qunaireTabShow=false;//问卷
                   scope.baseTabShow=false;//基地
                scope.classTabShow=false;//班级
                scope.liveTabShow=false;//直播
                 //遍历初始化 菜单  优化 可以直接用数字来代表，省去循环
                 angular.forEach(scope.knowConfig.menu, function (kdata, index, array) {
                     switch (kdata) {
                         case "structure":
                             scope.menuList.push({
                                 "id": "structure",
                                 "name": T.T("KnowledgeStructure"),
                                 "icon": "#icon-zhishi"
                             });
                             break;
                         case "taskStructure":
                             scope.menuList.push({
                                 "id": "taskStructure",
                                 "name": T.T("KnowledgeStructure") + "/" + T.T("QuestionBank"),
                                 "icon": "#icon-zhishi"
                             });
                             break;
                         case "courseware":
                             scope.menuList.push({
                                 "id": "courseware",
                                 "name": "选择课程",
                                 "icon": "#icon-kecheng"
                             });
                             break;
                         case "file":
                             scope.menuList.push({
                                 "id": "file",
                                 "name": T.T("File"),
                                 "icon": "#icon-file"
                             });
                             break;
                         case "folder":
                             scope.menuList.push({
                                 "id": "folder",
                                 "name": T.T("Folder"),
                                 "icon": "#icon-file"
                             });
                             break;
                         case "examination":
                             scope.menuList.push({
                                 "id": "examination",
                                 "name": T.T("Paper"),
                                 "icon": "#icon-icon04"
                             });
                             break;
                         case "externalpaper":
                             scope.menuList.push({
                                 "id": "externalpaper",
                                 "name": T.T("ExternalPaper"),
                                 "icon": "#icon-icon04"
                             });
                             break;
                         case "question":
                             scope.menuList.push({
                                 "id": "question",
                                 "name": "题目",
                                 "icon": "#icon-ti"
                             });
                             break;
                         case "trainingTask":
                             scope.menuList.push({
                                 "id": "task",
                                 "name": "任务",
                                 "icon": "#icon-shijian5"
                             });
                             break;
                        case "certificate":
                             scope.menuList.push({
                                 "id": "certificate",
                                 "name": "证书",
                                 "icon": "#icon-jifen2"
                             });
                             break;
                        case "qunaire":
                             scope.menuList.push({
                                 "id": "qunaire",
                                 "name": "问卷",
                                 "icon": "#icon-xingjikaoshi"
                             });
                             break;
                        case "base":
                             scope.menuList.push({
                                 "id": "base",
                                 "name": "基地",
                                 "icon": "#icon-dizhi"
                             });
                             break;
                        case "class":
                             scope.menuList.push({
                                 "id": "class",
                                 "name": "班级",
                                 "icon": "#icon-redian"
                             });
                             break;
                        case "live":
                            scope.menuList.push({
                                "id": "live",
                                "name": "直播",
                                "icon": "#icon-my-zhibo-copy"
                            });
                        break;
                     }
                 });
                 if (scope.menuList.length > 0) {   // 第一个标为默认显示
                     scope.menuList[0].isSel = true;
                     scope.menuObj = scope.menuList[0];
                     scope.displayContent(scope.menuList[0]);
                 }

             }
             //菜单切换
             scope.menuTab = function (item) {
                 angular.forEach(scope.menuList, function (data, index, array) {
                     if (data.id == item.id) {
                         data.isSel = true;
                         scope.displayContent(item);
                     } else {
                         data.isSel = false;
                     }
                 });
             }
             // 显示对应的内容
             scope.displayContent = function (item) {
                 scope.structureTabShow = false;        // 知识结构
                 scope.taskStructureTabShow = false;            // 任务中的知识结构
                 scope.coursewareTabShow = false;    // 课程
                 scope.fileTabShow = false;                 // 文件
                 scope.folderTabShow = false;            // 文件夹
                 scope.examinationTabShow = false;  // 试卷
                 scope.questionTabShow = false;  // 题库
                 scope.taskTabShow = false; // 任务
                 scope.certificateTabShow=false;//证书
                 scope.qunaireTabShow=false;//问卷
                scope.baseTabShow=false;//基地
                scope.classTabShow=false;//班级
                scope.externalpaperTabShow=false;//外部试卷
                scope.liveTabShow=false;//直播
                 var id = item.id;
                 switch (id) {
                     case "structure":          // 知识结构              
                         scope.structureTabShow = true;
                         break;
                     case "taskStructure":    // 任务中的知识机构
                         scope.taskStructureTabShow = true;
                         break;
                     case "courseware":       // 课程
                         scope.coursewareTabShow = true;
                         break;
                     case "file":                   // 文件                
                         scope.fileTabShow = true;
                         break;
                     case "folder":               // 文件夹
                         scope.folderTabShow = true;
                         break;
                     case "examination":   //试卷
                         scope.examinationTabShow = true;
                         break;
                    case "externalpaper":   //外部试卷
                         scope.externalpaperTabShow = true;
                         break;
                     case "question":    // 题库
                         scope.questionTabShow = true;
                         break;
                     case "task":    // 任务
                         scope.taskTabShow = true;
                         break;
                    case "certificate":   //证书
                        scope.certificateTabShow=true;
                        break;
                    case "qunaire":   //问卷
                        scope.qunaireTabShow=true;
                        break;
                    case "base":   //基地
                        scope.baseTabShow=true;
                        break;
                    case "class":   //班级
                        scope.classTabShow=true;
                        break;
                    case "live":   //直播
                        scope.liveTabShow=true;
                        break;
                 }
                 //如果窗口为MINI
                 if (scope.knowConfig.windowSize == "mini") {
                     scope.menuObj = item;
                 }
             }
             scope.menuListShow = false;
             //迷你下拉列表
             scope.menuClickShow = function () {
                 scope.menuListShow = !scope.menuListShow;
             }
             // 从此初始化
             scope.init();
             // 关闭
             scope.menuClose = function () {
                 // scope.getSsList();               
                 if (!Comm.isNull(scope.knowConfig.callbackParams)) {
                     scope.knowConfig.callbackParams.isClose = true;
                 }
                 scope.knowConfig.isShow = false;                //父域用的ng-if 所以父域与子域进行了拆分       
    
                 scope.onCallback();
             }
         },
         controller: function ($scope, $document) {
             //点击非指定区域，关闭显示层
             $document.bind("click", function (evt) {
                 var evt = window.event ? window.event : evt,
                target = evt.srcElement || evt.target;
                 if ($document[0].getElementById("erjiyunying_fenpeiqiye_middle") != null) {
                     var bt = $document[0].getElementById("erjiyunying_fenpeiqiye_middle").contains(target);
                     if (!bt) {
                         $scope.$apply(function () {
                             $scope.isOrgFlag = false; // 企业搜索列表框
                         });
                     }
                 }
             });
         }
     }
 } ])
/***********************************************知识结构选择*************************************************/
 .directive("knowledgeSelectorStructure", ["$rootScope", "$timeout", "sysUserInfo", "RequestTrainService", "Comm", "Msg", function ($rootScope, $timeout, sysUserInfo, RTS, Comm, Msg) {
     return {
         restrice: "AE",
         //require: "^knowledgeSelector", // 不好用
         //replace:true, 
         scope: false,
         //  { knowConfig: "=", //单独的二级运营对象    包含： kssList 选中列表   kssMore  是否多选  onCallback 退出时的回调方便有其他的操作}
         templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_structure.html",
         link: function (scope, element, attr) {
             // 初始化
             scope.structureList = [];
             //配置参数
             scope.stuctureParams = {
                 userId: sysUserInfo.getuserinfo().user_ID, //搜索负责人 预留                
                 searchName: "", //搜索内容 
                 knowledge_Id: "", // 子集搜索
                 orgId: sysUserInfo.getuserinfo().organization_ID,   // 企业id
                 powerLV: sysUserInfo.getuserinfo().powerLV //登录人的系统角色         
             };
             if(scope.knowConfig.powerLV!=undefined&&scope.knowConfig.powerLV!=null){
                scope.stuctureParams.powerLV=scope.knowConfig.powerLV;
            }
             // 展开/折叠
             scope.openNode = function (obj, knode) {
                 //scope.kssLoading = true;                  
                 if (!obj.collapsed && knode.haschildren > 0) { // 展开时请求服务器  并且存在子节点。                                  
                     knode.btnLoadingShow = true;
                     scope.stuctureParams.knowledge_Id = knode.knowledge_Id;
                     scope.stuctureParams.searchName = "";  //初始化筛选框
                     RTS.findKnowledgeList(scope.stuctureParams).then(function (response) {  // then
                         //scope.kssLoading = false;
                         knode.btnLoadingShow = false;
                         if (response.errorcode == "0") {
                             knode.children = response.datas;
                         }
                     });
                 }
                 obj.toggle();
             }
             //选择知识结构
             scope.radioCheck = function (knode) {
                 if (!scope.knowConfig.kssMore) {     //单选
                     if (scope.knowConfig.windowSize == "mini") {// 小窗口
                         if (scope.knowConfig.kssList != null && scope.knowConfig.kssList.length > 0) { // 判断有没有选择
                             if (scope.knowConfig.kssList[0].knowledge_Id == knode.knowledge_Id) { //判断选择的和已选的是不是同一个
                                 scope.knowConfig.kssList = [];    // 初始化
                             } else {// 不是重新添加
                                 scope.knowConfig.kssList = [];    // 初始化
                                 scope.knowConfig.kssList.push(knode);  // 添加到选中的list的集合中                                                    
                             }
                         } else {//如果没有选择
                             scope.knowConfig.kssList = [];    // 初始化
                             scope.knowConfig.kssList.push(knode);  // 添加到选中的list的集合中                                                    
                         }
                     } else {  //标准窗口
                         scope.knowConfig.kssList = [];    // 初始化
                         scope.knowConfig.kssList.push(knode);  // 添加到选中的list的集合中                    
                         scope.knowConfig.isShow = false;  // 关闭窗口
                     }
                     if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                         scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                     }
                     scope.onCallback();
                 } else {   // 多选
                     scope.isAdd = true;
                     angular.forEach(scope.knowConfig.kssList, function (data, index, array) {   //判断是不是已经选择了
                         if (data.knowledge_Id == knode.knowledge_Id) {
                             scope.knowConfig.kssList.splice(index, 1);    // 如果已经有了那么删除掉  
                             Msg.info("已移除分类", data.knowledge_Name);
                             scope.isAdd = false;
                         }
                     });
                     if (scope.isAdd) {
                         Msg.success("已选中分类", knode.knowledge_Name);
                         scope.knowConfig.kssList.push(knode);
                     }

                 }
                 //console.log(scope.knowConfig.kssList);
             }
             //判断有没有选中 非常消耗性能的
             scope.getStructureCheck = function (id) {
                 var flag = false;
                 angular.forEach(scope.knowConfig.kssList, function (data, index, array) {
                     if (data.knowledge_Id == id) {
                         //console.log(id);
                         flag = true;
                     }
                 });
                 return flag;
             }
             // 执行回车
             scope.findlistbyEnter = function (e) {
                 var keycode = window.event ? e.keyCode : e.which;
                 if (keycode == 13) {
                     scope.getStruList();
                 }
             }
             //获取知识结构             
             scope.getStruList = function () {
                 scope.kssLoading = true;
                 //处理全部搜索
                 if (Comm.isNull(scope.stuctureParams.searchName)) {
                     scope.stuctureParams.knowledge_Id = "";
                 }
                 // 获取数据
                 RTS.findKnowledgeList(scope.stuctureParams).then(function (response) {
                     scope.kssLoading = false;  //关闭loading
                     if (response.errorcode == "0") {// 成功       
                         scope.structureList = response.datas;
                     } else {   // 获取失败 
                         Msg.error("获取失败！");
                     }
                 });
             }
             scope.getStruList(); // 先调用一次
             //**************************************模版选择器**************************************//
             //保存模板  
             scope.isModelShow = false;
             scope.addModel = function () {
                 scope.isModelShow = true;
             }
             scope.addHide = function () {
                 scope.isModelShow = false;
             }
             scope.saveModel = function () {
                 scope.isModelShow = false;
                 scope.getStruList(); // 先调用一次
             }
             // 跳转分类用
             scope.playKngframe = function () {
                 $rootScope.parstr = "index.Train";
                 $rootScope.secparstr = "index.Train.kngframe";
             }
         }
     }
 } ])
 /***********************************************证书*************************************************/
 .directive("certificateSelectorTask", ["$timeout", "sysUserInfo", "RequestTrainService", "Comm", "Msg","MsgCon",  function ($timeout, sysUserInfo, RTS, Comm, Msg,MsgCon) {
     return {
         restrice: "AE",
         //require: "^knowledgeSelector", // 不好用
         //replace:true, 
         scope: false,
         //  { knowConfig: "=", //单独的二级运营对象    包含： kssList 选中列表   kssMore  是否多选  onCallback 退出时的回调方便有其他的操作}
         templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_certificate.html",
         link: function (scope, element, attr) {
             // 初始化
             scope.certificateList = [];
             //配置参数
             scope.certificateParams = {
                 searchText: "", // 名称                                                
                 pageIndex: 1,
                 pageSize: 20,
                 userid: sysUserInfo.getuserinfo().user_ID,   // 企业id
             };
             //选择知识结构
             scope.checkSingle = function (knode) {
                 if (!scope.knowConfig.cerMore) {     //单选
                     if (scope.knowConfig.windowSize == "mini") {// 小窗口
                         if (scope.knowConfig.cerList != null && scope.knowConfig.cerList.length > 0) { // 判断有没有选择
                             if (scope.knowConfig.cerList[0].certificateId == knode.certificateId) { //判断选择的和已选的是不是同一个
                                 scope.knowConfig.cerList = [];    // 初始化
                                 knode.isSel = false;   // 选中样式
                             } else {// 不是重新添加
                                 knode.isSel = true;   // 选中样式
                                 scope.knowConfig.cerList = [];    // 初始化
                                 scope.knowConfig.cerList.push(knode);  // 添加到选中的list的集合中                                                    
                             }
                         } else {//如果没有选择
                             knode.isSel = true;   // 选中样式
                             scope.knowConfig.cerList = [];    // 初始化
                             scope.knowConfig.cerList.push(knode);  // 添加到选中的list的集合中                                                    
                         }
                     } else {  //标准窗口
                         knode.isSel = true;   // 选中样式
                         scope.knowConfig.cerList = [];    // 初始化
                         scope.knowConfig.cerList.push(knode);  // 添加到选中的list的集合中                    
                         scope.knowConfig.isShow = false;  // 关闭窗口
                     }
                     if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                         scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                     }
                     scope.onCallback();
                 } else {   // 多选
                     scope.isAdd = true;
                     angular.forEach(scope.knowConfig.cerList, function (data, index, array) {   //判断是不是已经选择了
                         if (data.certificateId == knode.certificateId) {
                             scope.knowConfig.cerList.splice(index, 1);    // 如果已经有了那么删除掉  
                             scope.isAdd = false;
                             knode.isSel = false;   // 选中样式
                         }
                     });
                     if (scope.isAdd) {
                         scope.knowConfig.cerList.push(knode);
                         knode.isSel = true;   // 选中样式
                     }

                 }
                 //console.log(scope.knowConfig.kssList);
             }

             // 执行回车
             scope.findlistbyEnter = function (e) {
                 var keycode = window.event ? e.keyCode : e.which;
                 if (keycode == 13) {
                     scope.getCertificateList();
                 }
             }
             // 选中某一个
             scope.checkSel = function (know) {
                 know = !know;
             }
             //获取任务列表             
             scope.getCertificateList = function () {
                 scope.cerLoading = true;
                 // 获取数据
                 RTS.findCertificatePage(scope.certificateParams).then(function (response) {
                     scope.cerLoading = false;  //关闭loading
                     if (response.errorcode == "0") {// 成功       
                         scope.certificateList = response.datas;
                         scope.getCertificateCheck();
                     } else {   // 获取失败 
                         Msg.error("获取失败！");
                     }
                 });
             }
             //判断有没有选中 非常消耗性能的
             scope.getCertificateCheck = function (item) {
                 angular.forEach(scope.knowConfig.cerList, function (rdata, rindex) {
                     angular.forEach(scope.knowConfig.cerList, function (data, index, array) {
                         if (rdata.certificateId == data.certificateId) {
                             scope.knowConfig.cerList[rindex].isSel = true;
                         }
                     });
                 });
             }
             scope.getCertificateList(); // 先调用一次             

              /*********************************************************证书的增删改********************************************************************/

              //初始新增的参数
            scope.initAdd = function () {
                scope.item = {
                    certificateName: "", //证书名称
                    certificateImg: "", //背景图
                    certificateIcon: "", //荣誉徽章
                    content: "", //证书内容
                    certificateNum: "", //证书编辑
                    authorities: "", //落款名称
                    certificateType: 0,
                    templateId: null,
                    templateName: "",
                    templatePath: "",
                    createUserId: sysUserInfo.getuserinfo().user_ID,
                    createUserName: sysUserInfo.getuserinfo().user_Name,
                    createOrgId: sysUserInfo.getuserinfo().organization_ID,
                    createOrgName: sysUserInfo.getuserinfo().organization_Name
                };
            }
            scope.initAdd();
             /*
                *   遍历选中的对象
                *   list 集合
                *   serIds ref  id集合
                *   serItems ref obj集合不用传null
                */
                scope.getParamsList = function (list, serIds, serItems) {
                    angular.forEach(list, function (data, ind, arr) {//循环全部对象
                        if (data.isSel) {// 找到选中的对象
                            serIds.push(data.certificateId); // 存id
                            if (serItems != null)
                                serItems.push(data); // 存obj
                        }
                    });
                }
                // 删除
                scope.delinfo = function (item) {
                    var ids = [];
                    if (item == null) { // 判断是不是单个的删除
                        scope.getParamsList(scope.knowConfig.cerList, ids, null);
                    } else {// 单独删除
                        ids.push(item.certificateId);
                    }
                    // 未选中
                    if (Comm.isNull(ids) || ids.length <= 0) {
                        Msg.warning("提示", "请选择要删除的数据!");
                        return;
                    }
                    //提示框
                    MsgCon.delnoicon().then(function (flag) {   // 删除弹框
                        if (flag) {
                            // 发送请求
                            RTS.delCertificate({ certificateids: ids.join(",") }).then(function (respose) {
                                if (respose.errorcode == "0") {
                                    Msg.success("操作成功！");
                                    scope.checkAll = 0; // 复选框选中的数量            
                                    scope.getCertificateList();  // 重新请求一下数据
                                } else {
                                    Msg.error("操作失败！");
                                }
                            }, function errorCallback() {
                                console.log("连接服务器失败！");
                            });
                        }
                    }, function (p) { console.log('error') });
                }
                 scope.showForm = false;

                // 关闭弹框
                scope.closeOrOpenForm = function () {
                    scope.showForm = !scope.showForm;
                }
                //打开编辑
                scope.openAdd = function (item) {

                    if (item != undefined) {
                        scope.item = item;
                    } else {
                        var count = 0;
                        angular.forEach(scope.knowConfig.cerList, function (data, ind, arr) {//循环全部对象
                            if (data.isSel) {// 找到选中的对象
                                scope.item = data;
                                count++;
                            }
                        });
                        if (count > 1) {
                            Msg.warning("提示", "只能操作一条数据");
                            return;
                        } else if (count == 0) {
                            Msg.warning("提示", "请选择一条数据");
                            return;
                        }

                    }
                    //打开窗口
                    scope.closeOrOpenForm();
                }
                //保存
                scope.saveObj = function () {
                    if (scope.item.certificateName.length <= 0) {
                         Msg.warning("请输入证书名称！");
                         return;
                     }
                    var newobj = angular.copy(scope.item);
                    RTS.EditCertificate({ data: JSON.stringify(newobj) }).then(function (respose) {
                        if (respose.errorcode == "0") {
                            Msg.success("操作成功！");
                            scope.closeOrOpenForm();
                            scope.initAdd();
                            scope.getCertificateList();
                            scope.saveTemplate(respose.data.certificateId);
                        } else {
                            Msg.error("操作失败！");
                        }
                    }, function errorCallback() {
                        console.log("连接服务器失败！");
                    });
                }
                //生成证书
                scope.saveTemplate = function (id) {
                    RTS.TemplateGeneration({ certificateid: id }).then(function (respose) {
                        if (respose.errorcode == "0") {
                            Msg.success("证书生成成功！");
                        } else {
                            Msg.error("操作失败！");
                        }
                    }, function errorCallback() {
                        console.log("连接服务器失败！");
                    });
                }

                /*********************************************************************************************/
                 //关闭窗口
             scope.isHideFun = function () {
                 scope.closeOrOpenForm();
             }
             scope.upModelLoading = false;
             scope.upImgLoading = false;

             /*********************************************模板结束**********************************************/
             //上传模板单击
             scope.uploadfile = function () {
                 scope.optype = 1;
                 document.getElementById("fileupload").click();
             }
             //上传封面单击
             scope.uploadImg = function () {
                 scope.optype = 2;
                 document.getElementById("imgupload").click();
             }
             /*********************************************文件上传开始**********************************************/
             var takUpFile = scope.knowConfig.uploader //= new FileUploader();
             takUpFile.onWhenAddingFileFailed = function (item /*{File|FileLikeObject}*/, filter, options) {     // 选择文件后失败       0
                 console.info('选择文件后失败', item, filter, options);
             };
             takUpFile.onAfterAddingFile = function (fileItem) {  // 选择文件后 （成功）   0          
                 console.info('选择文件后', fileItem);
                 fileItem.optype = scope.optype;
                 // 上传判断是不是有文件 
                 if (takUpFile.isUploading) {
                     console.log("有文件正在上传。。");
                     return;
                 } else {
                     if (fileItem.optype == 1) {
                         scope.upModelLoading = true;
                         // 上传参数  
                         var upfileparam = "?userid=" + sysUserInfo.getuserinfo().user_ID + "&type=2";
                         //上传文件路径
                         fileItem.url = RTS.uploadFtl(upfileparam);
                     } else {
                         scope.upImgLoading = true;
                         // 上传参数  
                         var upfileparam = "?state=10";
                         //上传文件路径
                         fileItem.url = RTS.uploadCover(upfileparam);
                     }
                 }
             };
             takUpFile.onAfterAddingAll = function (addedFileItems) { // 选择文件后添加到队列   1 
                 console.info('选择文件后添加到队列', addedFileItems);
                 // 上传判断是不是有文件                        
                 if (takUpFile.isUploading) {
                     MsgCon.alert("有文件正在上传。。");
                     return;
                 } else {
                     takUpFile.uploadAll();
                 }
             };
             // 开始上传
             takUpFile.onBeforeUploadItem = function (item) {    // 2 上传之前一项
                 console.info('上传之前一项', item);
             };
             takUpFile.onProgressItem = function (fileItem, progress) {   // 3 上传进度
                 console.info('上传进度', fileItem, progress);
             };
             takUpFile.onProgressAll = function (progress) {      //4 队列进度
                 console.info('队列进度', progress);
             };
             //fileItem 请求信息 response: 返回值status: 返回状态  headers: 请求头 
             takUpFile.onSuccessItem = function (fileItem, response, status, headers) {   // 5上传成功
                 console.info('5上传成功', fileItem, response, status, headers);
                 scope.upModelLoading = false;
                 scope.upImgLoading = false;
                 if (response.errorcode = "0") {
                     //上传的模板
                     if (fileItem.optype == 1) {
                        // scope.item.templateId = response.data.templateId;
                         scope.item.templateName = response.data.templateFileName;
                         scope.item.templatePath = response.data.templateDownloadPath;
                         //上传的缩略图
                     } else {
                         scope.item.certificateImg = response.errormsg;
                     }
                 }
             };
             takUpFile.onErrorItem = function (fileItem, response, status, headers) {     // 上传地址有问题
                 console.info('上传地址有问题', fileItem, response, status, headers);
                 Msg.error("连接不上服务器,请刷新重试！");
                 takUpFile.clearQueue();
             };
             takUpFile.onCompleteItem = function (fileItem, response, status, headers) {  //6     单文件上传完成
                 console.info('单文件上传完成', fileItem, response, status, headers);
                 takUpFile.clearQueue();
             };
             takUpFile.onCompleteAll = function () {  // 6 单文件上传完成或者队列上传完成的时候
                 console.info('单文件上传完成或者队列上传完成的时候');
                 takUpFile.clearQueue();  // 上传完毕清除队列
             };
             /*********************************************文件上传结束**********************************************/
             //自动生成编号
             scope.Newuser_No = function () {
                 var date = new Date();
                 var seperator1 = "";
                 var seperator2 = "";
                 var year = date.getFullYear();
                 var month = date.getMonth() + 1;
                 var strDate = date.getDate();
                 if (month >= 1 && month <= 9) {
                     month = "0" + month;
                 }
                 if (strDate >= 0 && strDate <= 9) {
                     strDate = "0" + strDate;
                 }
                 var currentdate = year + seperator1 + month + seperator1 + strDate
                    + "" + date.getHours() + seperator2 + date.getMinutes()
                    + seperator2 + date.getSeconds() + date.getMilliseconds();
                 scope.item.certificateNum = currentdate;
             }
         }
     }
 } ])
/***********************************************任务*************************************************/
 .directive("knowledgeSelectorTask", ["$timeout", "sysUserInfo", "RequestTrainService", "Comm", "Msg", function ($timeout, sysUserInfo, RTS, Comm, Msg) {
     return {
         restrice: "AE",
         //require: "^knowledgeSelector", // 不好用
         //replace:true, 
         scope: false,
         //  { knowConfig: "=", //单独的二级运营对象    包含： kssList 选中列表   kssMore  是否多选  onCallback 退出时的回调方便有其他的操作}
         templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_task.html",
         link: function (scope, element, attr) {
             // 初始化
             scope.taskList = [];
             //配置参数
             scope.taskParams = {
				 create_id:sysUserInfo.getuserinfo().user_ID,
                 name: "", // 任务名称                                                
                 pageIndex: 1,
                 pageSize: 20000,
                 state: 0, // 状态                
                 org_ID: sysUserInfo.getuserinfo().organization_ID,   // 企业id
                 powerLV: sysUserInfo.getuserinfo().powerLV //登录人的系统角色         
             };
			 //显示加载更多
             scope.listmoreVisible = false;
             scope.loadMore = function () {
                scope.taskParams.pageIndex = parseInt(scope.taskParams.pageIndex) + 1;
                scope.getTaskList();
             }
             //全选
             scope.checkAll = function () {
                 var isArrangeSel = true;
                 if (scope.knowConfig.ksrList != null && scope.knowConfig.ksrList.length >= scope.taskList.length) { // 取消                                          
                     isArrangeSel = false;
                 }
                 scope.knowConfig.ksrList.length = 0;   // 必须这样清空或splice
                 // 这里必须push 不然数据不能正常使用双向绑定                
                 angular.forEach(scope.taskList, function (data, index, arr) {
                     if (isArrangeSel) {//                         
                         scope.knowConfig.ksrList.push(data);
                     }
                     data.isSel = isArrangeSel;  //全部选中/不选中   设置样式
                 });
             }
             //选择知识结构
             scope.checkSingle = function (knode) {
                 if (!scope.knowConfig.ksrMore) {     //单选
                     if (scope.knowConfig.windowSize == "mini") {// 小窗口
                         if (scope.knowConfig.ksrList != null && scope.knowConfig.ksrList.length > 0) { // 判断有没有选择
                             if (scope.knowConfig.ksrList[0].id == knode.id) { //判断选择的和已选的是不是同一个
                                 scope.knowConfig.ksrList = [];    // 初始化
                                 knode.isSel = false;   // 选中样式
                             } else {// 不是重新添加
                                 knode.isSel = true;   // 选中样式
                                 scope.knowConfig.ksrList = [];    // 初始化
                                 scope.knowConfig.ksrList.push(knode);  // 添加到选中的list的集合中                                                    
                             }
                         } else {//如果没有选择
                             knode.isSel = true;   // 选中样式
                             scope.knowConfig.ksrList = [];    // 初始化
                             scope.knowConfig.ksrList.push(knode);  // 添加到选中的list的集合中                                                    
                         }
                     } else {  //标准窗口
                         knode.isSel = true;   // 选中样式
                         scope.knowConfig.ksrList = [];    // 初始化
                         scope.knowConfig.ksrList.push(knode);  // 添加到选中的list的集合中                    
                         scope.knowConfig.isShow = false;  // 关闭窗口
                     }
                     if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                         scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                     }
                     scope.onCallback();
                 } else {   // 多选
                     scope.isAdd = true;
                     angular.forEach(scope.knowConfig.ksrList, function (data, index, array) {   //判断是不是已经选择了
                         if (data.id == knode.id) {
                             scope.knowConfig.ksrList.splice(index, 1);    // 如果已经有了那么删除掉  
                             //Msg.info("已移除分类", data.name);
                             scope.isAdd = false;
                             knode.isSel = false;   // 选中样式
                         }
                     });
                     if (scope.isAdd) {
                         //Msg.success("已选中分类", knode.name);
                         scope.knowConfig.ksrList.push(knode);
                         knode.isSel = true;   // 选中样式
                     }

                 }
                 //console.log(scope.knowConfig.kssList);
             }

             // 执行回车
             scope.findlistbyEnter = function (e) {
                 var keycode = window.event ? e.keyCode : e.which;
                 if (keycode == 13) {
                     scope.getTaskList();
                 }
             }
             // 选中某一个
             scope.checkSel = function (know) {
                 know = !know;
             }
              //获取任务列表             
             scope.getTaskList = function () {
                 scope.ksrLoading = true;
                 // 获取数据
                 RTS.findstage(scope.taskParams).then(function (response) {
                     scope.ksrLoading = false;  //关闭loading
                     if (response.errorcode == "0") {// 成功       
                        if(scope.taskParams.pageIndex==1){
                            scope.taskList = response.datas;
                        }else{
                             scope.taskList = scope.taskList.concat(response.datas);
                        }
                        
                         scope.getTaskCheck();
                         if (scope.taskParams.pageSize * scope.taskParams.pageIndex < response.numCount) {
                            scope.listmoreVisible = true;
                        } else {
                            scope.listmoreVisible = false;
                        }
                     } else {   // 获取失败 
                         Msg.error("获取失败！");
                     }
                 });
             }
             //判断有没有选中 非常消耗性能的
             scope.getTaskCheck = function (item) {
                 angular.forEach(scope.taskList, function (rdata, rindex) {
                     angular.forEach(scope.knowConfig.ksrList, function (data, index, array) {
                         if (rdata.id == data.id) {
                             scope.taskList[rindex].isSel = true;
                         }
                     });
                 });
             }
             scope.getTaskList(); // 先调用一次             
         }
     }
 } ])
 /***********************************************基地选择*************************************************/
  .directive("knowledgeSelectorBase", ["$timeout", "sysUserInfo", "RequestTrainService", "Comm", function ($timeout, sysUserInfo, RTS, Comm) {
      return {
          // baseList 列表  baseMore 是否多选
          restrice: "AE",
          scope: false,
          templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_base.html",
          link: function (scope, element, attr) {
              //初始化
              scope.init = function () {
                  scope.baseList = [];
                  scope.paramsBase = {
                      userid: sysUserInfo.getuserinfo().user_ID,
                      orgid: sysUserInfo.getuserinfo().organization_ID,
                      powerLV: sysUserInfo.getuserinfo().powerLV,
                      state:1,
                      searchText: "", //  搜索名称
                      pageIndex: 1,
                      pageSize: 20
                  };
              }
              //显示加载更多
              scope.listmoreVisible = false;
              //回车
              scope.baseEnter = function (e) {
                  var keycode = window.event ? e.keyCode : e.which;
                  if (keycode == 13) {
                      scope.baseList = [];
                      scope.getBaseList();
                  }
              }
              scope.loadMore = function () {
                  scope.paramsBase.pageIndex = parseInt(scope.paramsBase.pageIndex) + 1;
                  scope.getBaseList();
              }
              //全选
              scope.checkAll = function () {
                  var isBaseSel = true;
                  if (scope.knowConfig.baseList != null && scope.knowConfig.baseList.length >= scope.baseList.length) { // 取消                        
                      isBaseSel = false;
                  }
                  scope.knowConfig.baseList.length = 0; // 必须这样清空 或splice
                  // 这里必须push 不然数据不能正常使用双向绑定
                  angular.forEach(scope.baseList, function (data, index, arr) {
                      if (isBaseSel)// 全选
                          scope.knowConfig.baseList.push(data);
                      data.isSel = isBaseSel;   //全部选中/不选中   设置样式
                  });
              }
              // 选中  单选、多选
              scope.checkSingle = function (eItem) {
                  if (!scope.knowConfig.baseMore) {     //单选
                      if (scope.knowConfig.windowSize == "mini") {// 小窗口
                          if (scope.knowConfig.baseList != null || scope.knowConfig.baseList.length > 0) { // 判断有没有选择
                              if (scope.knowConfig.baseList[0].trainbase_id == eItem.trainbase_id) { //判断选择的和已选的是不是同一个
                                  scope.knowConfig.baseList = [];    // 初始化
                                  eItem.isSel = false;    // 选中样式
                              } else {// 不是重新添加
                                  eItem.isSel = true;    // 选中样式
                                  scope.knowConfig.baseList = [];    // 初始化
                                  scope.knowConfig.baseList.push(eItem);  // 添加到选中的list的集合中                                                    
                              }
                          } else {//如果没有选择
                              eItem.isSel = false;    // 选中样式
                              scope.knowConfig.baseList = [];    // 初始化
                              scope.knowConfig.baseList.push(eItem);  // 添加到选中的list的集合中                                                    
                          }
                      } else {  //标准窗口
                          scope.knowConfig.baseList = [];    // 初始化
                          eItem.isSel = true;    // 选中样式
                          scope.knowConfig.baseList.push(eItem);  // 添加到选中的list的集合中
                          scope.knowConfig.isShow = false;  // 关闭窗口
                      }
                      if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                          scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                      }
                      scope.onCallback();
                  } else {   // 多选
                      eItem.isSel = true;  //选中样式             
                      angular.forEach(scope.knowConfig.baseList, function (data, index, array) {   //判断是不是已经选择了
                          if (data.trainbase_id == eItem.trainbase_id) {
                              scope.knowConfig.baseList.splice(index, 1);    // 如果已经有了那么删除掉  
                              eItem.isSel = false;  //选中样式                             
                          }
                      });
                      if (eItem.isSel) {
                          scope.knowConfig.baseList.push(eItem);
                      }
                  }
              }
              //更具名称搜索
              scope.getListbyName = function () {
                  scope.baseList = [];
                  scope.getBaseList();
              }
              // 初始化试卷列表
              scope.getBaseList = function () {
                  scope.baseLoading = true;

                  RTS.findTrainbase(scope.paramsBase).then(function (response) {
                      scope.baseLoading = false;
                      if (response.errorcode == "0") {
                          scope.baseList = scope.baseList.concat(response.datas);
                          scope.setItemSel();
                          if (scope.paramsBase.pageSize * scope.paramsBase.pageIndex < response.numCount) {
                              scope.listmoreVisible = true;
                          } else {
                              scope.listmoreVisible = false;
                          }
                      } else {
                          console.log("请求失败");
                      }
                  });
              }
              // 初始化选中
              scope.setItemSel = function () {
                  angular.forEach(scope.knowConfig.baseList, function (data, index, array) {   //判断是不是已经选择了
                      angular.forEach(scope.baseList, function (edata, cindex, carray) { // 全部课程
                          if (data.trainbase_id == edata.trainbase_id) {
                              edata.isSel = true;  //选中样式                             
                          }
                      });
                  });
              }
              scope.init();
              scope.getBaseList();

          }
      }
  } ])
  /***********************************************班级选择*************************************************/
  .directive("knowledgeSelectorClass", ["$timeout", "sysUserInfo", "RequestTrainService", "Comm", function ($timeout, sysUserInfo, RTS, Comm) {
      return {
          // classList 列表  classMore 是否多选
          restrice: "AE",
          scope: false,
          templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_class.html",
          link: function (scope, element, attr) {
              //初始化
              scope.init = function () {

                  scope.classList = [];
                  /**************************************初始化参数***********************************************************/
                    scope.paramsClass = {
                        userid: sysUserInfo.getuserinfo().user_ID,
                        searchText: "", //搜索内容 
                        searchType: "2", //筛选类型 班级名称
                        pageIndex:1,
                        pageSize:20,
                        screenText:"",
                        screenType:"2",
                        type:"1",
                        knowledgeId:"",
                        orgid: sysUserInfo.getuserinfo().organization_ID,   // 企业id
                        powerLV: sysUserInfo.getuserinfo().powerLV,//登录人的系统角色         
                        orderby:"desc",//排序
                        xid:""
                    };
                     // 初始化担当前人的信息
                    // 部门
                    angular.forEach(sysUserInfo.getuserinfo().userOrgList, function (data, index, array) {
                        scope.paramsClass.xid += (scope.paramsClass.xid.length <= 0 ? "" : ",") + data.organization_ID;
                    });
                    //角色 
                    angular.forEach(sysUserInfo.getuserinfo().userRoleList, function (data, index, array) {
                        scope.paramsClass.xid += (scope.paramsClass.xid.length <= 0 ? "" : ",") + data.roles_ID;
                    });
                    //用户组
                    angular.forEach(sysUserInfo.getuserinfo().userGroupList, function (data, index, array) {
                        scope.paramsClass.xid += (scope.paramsClass.xid.length <= 0 ? "" : ",") + data.userGroup_ID;
                    })
                    scope.paramsClass.xid+=(scope.paramsClass.xid.length>0?",":"")+sysUserInfo.getuserinfo().user_ID;
              }
              //显示加载更多
              scope.listmoreVisible = false;
              //回车
              scope.classEnter = function (e) {
                  var keycode = window.event ? e.keyCode : e.which;
                  if (keycode == 13) {
                      scope.classList = [];
                      scope.getclassList();
                  }
              }
              scope.loadMore = function () {
                  scope.paramsClass.pageIndex = parseInt(scope.paramsClass.pageIndex) + 1;
                  scope.getclassList();
              }
              //全选
              scope.checkAll = function () {
                  var isClassSel = true;
                  if (scope.knowConfig.classList != null && scope.knowConfig.classList.length >= scope.classList.length) { // 取消                        
                      isClassSel = false;
                  }
                  scope.knowConfig.classList.length = 0; // 必须这样清空 或splice
                  // 这里必须push 不然数据不能正常使用双向绑定
                  angular.forEach(scope.classList, function (data, index, arr) {
                      if (isClassSel)// 全选
                          scope.knowConfig.classList.push(data);
                      data.isSel = isClassSel;   //全部选中/不选中   设置样式
                  });
              }
              // 选中  单选、多选
              scope.checkSingle = function (eItem) {
                  if (!scope.knowConfig.classMore) {     //单选
                      if (scope.knowConfig.windowSize == "mini") {// 小窗口
                          if (scope.knowConfig.classList != null || scope.knowConfig.classList.length > 0) { // 判断有没有选择
                              if (scope.knowConfig.classList[0].gradeId == eItem.gradeId) { //判断选择的和已选的是不是同一个
                                  scope.knowConfig.classList = [];    // 初始化
                                  eItem.isSel = false;    // 选中样式
                              } else {// 不是重新添加
                                  eItem.isSel = true;    // 选中样式
                                  scope.knowConfig.classList = [];    // 初始化
                                  scope.knowConfig.classList.push(eItem);  // 添加到选中的list的集合中                                                    
                              }
                          } else {//如果没有选择
                              eItem.isSel = false;    // 选中样式
                              scope.knowConfig.classList = [];    // 初始化
                              scope.knowConfig.classList.push(eItem);  // 添加到选中的list的集合中                                                    
                          }
                      } else {  //标准窗口
                          scope.knowConfig.classList = [];    // 初始化
                          eItem.isSel = true;    // 选中样式
                          scope.knowConfig.classList.push(eItem);  // 添加到选中的list的集合中
                          scope.knowConfig.isShow = false;  // 关闭窗口
                      }
                      if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                          scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                      }
                      scope.onCallback();
                  } else {   // 多选
                      eItem.isSel = true;  //选中样式             
                      angular.forEach(scope.knowConfig.classList, function (data, index, array) {   //判断是不是已经选择了
                          if (data.gradeId == eItem.gradeId) {
                              scope.knowConfig.classList.splice(index, 1);    // 如果已经有了那么删除掉  
                              eItem.isSel = false;  //选中样式                             
                          }
                      });
                      if (eItem.isSel) {
                          scope.knowConfig.classList.push(eItem);
                      }
                  }
              }
              //更具名称搜索
              scope.getListbyName = function () {
                  scope.classList = [];
                  scope.getclassList();
              }
              // 初始化试卷列表
              scope.getclassList = function () {
                  scope.classLoading = true;

                  RTS.findGradeInfoAll(scope.paramsClass).then(function (response) {
                      scope.classLoading = false;
                      if (response.errorcode == "0") {
                          scope.classList = scope.classList.concat(response.datas);
                          scope.setItemSel();
                          if (scope.paramsClass.pageSize * scope.paramsClass.pageIndex < response.numCount) {
                              scope.listmoreVisible = true;
                          } else {
                              scope.listmoreVisible = false;
                          }
                      } else {
                          console.log("请求失败");
                      }
                  });
              }
              // 初始化选中
              scope.setItemSel = function () {
                  angular.forEach(scope.knowConfig.classList, function (data, index, array) {   //判断是不是已经选择了
                      angular.forEach(scope.classList, function (edata, cindex, carray) { // 全部课程
                          if (data.gradeId == edata.gradeId) {
                              edata.isSel = true;  //选中样式                             
                          }
                      });
                  });
              }
              scope.init();
              scope.getclassList();

          }
      }
  } ])
 /***********************************************问卷选择*************************************************/
  .directive("knowledgeSelectorQunaire", ["$timeout", "sysUserInfo", "RequestTrainService", "Comm", function ($timeout, sysUserInfo, RTS, Comm) {
      return {
          // qunaireList 列表  qunaireMore 是否多选
          restrice: "AE",
          scope: false,
          templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_qunaire.html",
          link: function (scope, element, attr) {
              //初始化
              scope.init = function () {
                  scope.qunaireList = [];
                  scope.paramsQunaire = {
                      userid: sysUserInfo.getuserinfo().user_ID,
                      orgid: sysUserInfo.getuserinfo().organization_ID,
                      powerLV: sysUserInfo.getuserinfo().powerLV,
                      searchText: "", //  搜索名称
                      pageIndex: 1,
                      pageSize: 20
                  };
              }
              //显示加载更多
              scope.listmoreVisible = false;
              //回车
              scope.qunaireEnter = function (e) {
                  var keycode = window.event ? e.keyCode : e.which;
                  if (keycode == 13) {
                      scope.qunaireList = [];
                      scope.getQunaireList();
                  }
              }
              scope.loadMore = function () {
                  scope.paramsQunaire.pageIndex = parseInt(scope.paramsQunaire.pageIndex) + 1;
                  scope.getQunaireList();
              }
              //全选
              scope.checkAll = function () {
                  var isQunaireSel = true;
                  if (scope.knowConfig.qunaireList != null && scope.knowConfig.qunaireList.length >= scope.qunaireList.length) { // 取消                        
                      isQunaireSel = false;
                  }
                  scope.knowConfig.qunaireList.length = 0; // 必须这样清空 或splice
                  // 这里必须push 不然数据不能正常使用双向绑定
                  angular.forEach(scope.qunaireList, function (data, index, arr) {
                      if (isQunaireSel)// 全选
                          scope.knowConfig.qunaireList.push(data);
                      data.isSel = isQunaireSel;   //全部选中/不选中   设置样式
                  });
              }
              // 选中  单选、多选
              scope.checkSingle = function (eItem) {
                  if (!scope.knowConfig.qunaireMore) {     //单选
                      if (scope.knowConfig.windowSize == "mini") {// 小窗口
                          if (scope.knowConfig.qunaireList != null || scope.knowConfig.qunaireList.length > 0) { // 判断有没有选择
                              if (scope.knowConfig.qunaireList[0].questionnaireId == eItem.questionnaireId) { //判断选择的和已选的是不是同一个
                                  scope.knowConfig.qunaireList = [];    // 初始化
                                  eItem.isSel = false;    // 选中样式
                              } else {// 不是重新添加
                                  eItem.isSel = true;    // 选中样式
                                  scope.knowConfig.qunaireList = [];    // 初始化
                                  scope.knowConfig.qunaireList.push(eItem);  // 添加到选中的list的集合中                                                    
                              }
                          } else {//如果没有选择
                              eItem.isSel = false;    // 选中样式
                              scope.knowConfig.qunaireList = [];    // 初始化
                              scope.knowConfig.qunaireList.push(eItem);  // 添加到选中的list的集合中                                                    
                          }
                      } else {  //标准窗口
                          scope.knowConfig.qunaireList = [];    // 初始化
                          eItem.isSel = true;    // 选中样式
                          scope.knowConfig.qunaireList.push(eItem);  // 添加到选中的list的集合中
                          scope.knowConfig.isShow = false;  // 关闭窗口
                      }
                      if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                          scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                      }
                      scope.onCallback();
                  } else {   // 多选
                      eItem.isSel = true;  //选中样式             
                      angular.forEach(scope.knowConfig.qunaireList, function (data, index, array) {   //判断是不是已经选择了
                          if (data.questionnaireId == eItem.questionnaireId) {
                              scope.knowConfig.qunaireList.splice(index, 1);    // 如果已经有了那么删除掉  
                              eItem.isSel = false;  //选中样式                             
                          }
                      });
                      if (eItem.isSel) {
                          scope.knowConfig.qunaireList.push(eItem);
                      }
                  }
              }
              //更具名称搜索
              scope.getListbyName = function () {
                  scope.qunaireList = [];
                  scope.getQunaireList();
              }
              // 初始化试卷列表
              scope.getQunaireList = function () {
                  scope.qunaireLoading = true;
                  console.log(scope.paramsExam);

                  RTS.findQuestionnairePage(scope.paramsQunaire).then(function (response) {
                      scope.qunaireLoading = false;
                      if (response.errorcode == "0") {
                          scope.qunaireList = scope.qunaireList.concat(response.datas);
                          scope.setItemSel();
                          if (scope.paramsQunaire.pageSize * scope.paramsQunaire.pageIndex < response.numCount) {
                              scope.listmoreVisible = true;
                          } else {
                              scope.listmoreVisible = false;
                          }
                      } else {
                          console.log("请求失败");
                      }
                  });
              }
              // 初始化选中
              scope.setItemSel = function () {
                  angular.forEach(scope.knowConfig.qunaireList, function (data, index, array) {   //判断是不是已经选择了
                      angular.forEach(scope.qunaireList, function (edata, cindex, carray) { // 全部课程
                          if (data.questionnaireId == edata.questionnaireId) {
                              edata.isSel = true;  //选中样式                             
                          }
                      });
                  });
              }
              scope.init();
              scope.getQunaireList();

          }
      }
  } ])
/***********************************************任务中知识结构选择*************************************************/
 .directive("knowledgeSelectorTaskStructure", ["$rootScope", "$timeout", "sysUserInfo", "RequestTrainService", "Comm", "Msg", "MsgCon", function ($rootScope, $timeout, sysUserInfo, RTS, Comm, Msg, MsgCon) {
     return {
         restrice: "AE",
         //require: "^knowledgeSelector", // 不好用
         //replace:true, 
         scope: false,
         //  { knowConfig: "=", //单独的二级运营对象    包含： kssList 选中列表   kssMore  是否多选  onCallback 退出时的回调方便有其他的操作}
         templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_task_structure.html",
         link: function (scope, element, attr) {
             // 初始化
             scope.taskList = [];
             //配置参数
             scope.taskParams = {
                create_id: sysUserInfo.getuserinfo().user_ID, //搜索负责人 预留                
                 searchName: "", //搜索内容 
                 knowledge_Id: "", // 子集搜索
                 orgId: sysUserInfo.getuserinfo().organization_ID,   // 企业id
                 powerLV: sysUserInfo.getuserinfo().powerLV //登录人的系统角色         
             };
             // 展开/折叠
             scope.openNode = function (obj, knode) {
                 //scope.kssLoading = true;                  
                 if (!obj.collapsed && knode.haschildren > 0) { // 展开时请求服务器  并且存在子节点。                                  
                     knode.btnLoadingShow = true;
                     scope.taskParams.knowledge_Id = knode.knowledge_Id;
                     scope.taskParams.searchName = "";  //初始化筛选框
                     RTS.findKnowledgeList(scope.taskParams).then(function (response) {  // then
                         //scope.kssLoading = false;
                         knode.btnLoadingShow = false;
                         if (response.errorcode == "0") {
                             knode.children = response.datas;
                             // 循环一遍 比较耗性能
                             angular.forEach(knode.children, function (taskData, index) {
                                 angular.forEach(scope.knowConfig.kstList, function (data, tindex, array) {
                                     if (taskData.knowledge_Id == data.knowledge_Id) {
                                         knode.children[index] = data;
                                     }
                                 });
                             })
                         }
                     });
                 }
                 obj.toggle();
             }
             //选择知识结构
             scope.radioCheck = function (knode, params) {
                 if (!scope.knowConfig.kstMore) {     //单选
                     if (scope.knowConfig.windowSize == "mini") {// 小窗口
                         if (scope.knowConfig.kstList != null && scope.knowConfig.kstList.length > 0) { // 判断有没有选择
                             if (scope.knowConfig.kstList[0].knowledge_Id == knode.knowledge_Id) { //判断选择的和已选的是不是同一个
                                 scope.knowConfig.kstList = [];    // 初始化
                             } else {// 不是重新添加
                                 scope.knowConfig.kstList = [];    // 初始化
                                 scope.knowConfig.kstList.push(knode);  // 添加到选中的list的集合中                                                    
                             }
                         } else {//如果没有选择
                             scope.knowConfig.kstList = [];    // 初始化
                             scope.knowConfig.kstList.push(knode);  // 添加到选中的list的集合中                                                    
                         }
                     } else {  //标准窗口
                         if (params != undefined && params != null && params != "")
                             knode[params] = true;
                         scope.knowConfig.kstList = [];    // 初始化
                         scope.knowConfig.kstList.push(knode);  // 添加到选中的list的集合中                    
                         scope.knowConfig.isShow = false;  // 关闭窗口
                     }
                     if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                         scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                     }
                     scope.onCallback();
                 } else {   // 多选
                     scope.isAdd = true;
                     if (params != undefined && params != null && params != "") {
                         knode[params] = !knode[params];
                         var flag = -1;  // 标志这个有没有被选中过
                         angular.forEach(scope.knowConfig.kstList, function (data, index, array) {   //判断是不是已经选择了
                             if (data.knowledge_Id == knode.knowledge_Id) {
                                 flag = index;
                             }
                         });
                         if (!knode.know_select_course && !knode.know_select_que && !knode.know_select_exam) { // 如果全部未选择状态
                             if (flag != -1) {
                                 Msg.info("已移除分类", scope.knowConfig.kstList[flag].knowledge_Name);
                                 scope.knowConfig.kstList.splice(flag, 1);    // 如果已经有了那么删除掉   
                             }
                             scope.isAdd = false;
                         } else {
                             if (flag != -1) {
                                 scope.isAdd = false;
                             } else {
                                 scope.isAdd = true;
                             }
                         }
                     } else {
                         angular.forEach(scope.knowConfig.kstList, function (data, index, array) {   //判断是不是已经选择了
                             if (data.knowledge_Id == knode.knowledge_Id) {
                                 scope.knowConfig.kstList.splice(index, 1);    // 如果已经有了那么删除掉  
                                 Msg.info("已移除分类", data.knowledge_Name);
                                 scope.isAdd = false;
                             }
                         });
                     }
                     // 处理题库 和普通添加
                     if (knode.know_select_que) {
                         var pExs = false;
                         pExs = scope.recursSelList(knode, false, pExs);
                         if (pExs) { // 是否存在关系
                             MsgCon.delnoicon("注意", "此题库有关联的父、子题库,选择后将会清除,确定选择吗？</br>", { html: true }, "确定").then(function (flag) {
                                 if (flag) {
                                     scope.addKnode(knode);
                                     scope.recursSelList(knode, true, pExs);
                                 } else {
                                     scope.recureChilDown(knode, true);
                                     // 清除总list
                                     scope.delSelList(knode, scope.taskList);
                                 }
                             });
                         } else {
                             scope.addKnode(knode);
                         }
                     } else if (scope.isAdd) {
                         scope.addKnode(knode);
                     }
                 }
             }
             // 添加显示
             scope.addKnode = function (knode) {
                 var flag = true;
                 angular.forEach(scope.knowConfig.kstList, function (data, index) {
                     if (data.knowledge_Id == knode.knowledge_Id) {
                         flag = false;
                     }
                 });
                 // 判断没有的情况下添加
                 if (flag) {
                     Msg.success("已选中分类", knode.knowledge_Name);
                     scope.knowConfig.kstList.push(knode);
                 }
             }
             /**
             当接到用户点击的是题库的分类的时候
             判断当前分类的直接父级和直接子集存不存在
             */
             // 判断选中list
             // pNode 当前题库
             // pReq 是否清除跟本题库有父子关系的题库
             // pExists 是否存在
             scope.recursSelList = function (pNode, pReq, pExists) {
                 var selList = angular.copy(scope.knowConfig.kstList);
                 angular.forEach(selList, function (data, index) {
                     // 判断当前级父级和子级是否存在
                     if (data.know_select_que) { // 当前节点是题库
                         // 父级 || // 子级
                         if (data.knowledge_Id == pNode.parentId || data.parentId == pNode.knowledge_Id) {
                             if (pReq) { // 清除节点 
                                 // 清除已选list
                                 scope.recureChilDown(data, true);
                                 // 清除总list
                                 scope.delSelList(data, scope.taskList);
                             }
                             pExists = true;
                         }
                     }
                 });
                 return pExists;
             }
             // 删除查询list 
             scope.delSelList = function (knode, pList) {
                 angular.forEach(pList, function (data, index) {
                     if (data.knowledge_Id == knode.knowledge_Id) {
                         data.know_select_que = false;
                     } else {
                         scope.delSelList(knode, data.children);
                     }

                 });
             }
             // 判断节点在不在选中的内容内 并修改题库的清除方式 只判断题库有没有被选择
             // pNode 节点
             // pReq  是否清除掉选中
             scope.recureChilDown = function (pNode, pReq) {
                 angular.forEach(scope.knowConfig.kstList, function (data, index) {
                     if (data.knowledge_Id == pNode.knowledge_Id && data.know_select_que) {
                         if (pReq) { // 确定清除
                             if (!data.know_select_course && !data.know_select_exam && data.know_select_que) {
                                 scope.knowConfig.kstList.splice(index, 1);
                             } else {
                                 data.know_select_que = false;
                             }
                         }
                         return true;
                     }
                 });
                 return false;
             }
             //判断有没有选中 非常消耗性能的
             scope.getTaskCheck = function (item) {
                 var flag = false;
                 angular.forEach(scope.knowConfig.kstList, function (data, index, array) {
                     if (data.knowledge_Id == item.knowledge_Id) {
                         //console.log(id);
                         flag = true;

                         //item = data;
                         //console.log(item);
                     }
                 });
                 return flag;
             }
             // 执行回车
             scope.findlistbyEnter = function (e) {
                 var keycode = window.event ? e.keyCode : e.which;
                 if (keycode == 13) {
                     scope.getStruList();
                 }
             }
             // 选中某一个
             scope.checkSel = function (know) {
                 know = !know;
             }
             //获取知识结构             
             scope.getStruList = function () {
                 scope.kstLoading = true;
                 //处理全部搜索
                 if (Comm.isNull(scope.taskParams.searchName)) {
                     scope.taskParams.knowledge_Id = "";
                 }
                 // 获取数据
                 RTS.findKnowledgeList(scope.taskParams).then(function (response) {
                     scope.kstLoading = false;  //关闭loading
                     if (response.errorcode == "0") {// 成功       
                         scope.taskList = response.datas;
                         // 循环一遍 比较耗性能
                         angular.forEach(scope.taskList, function (taskData, index) {
                             angular.forEach(scope.knowConfig.kstList, function (data, tindex, array) {
                                 if (taskData.knowledge_Id == data.knowledge_Id) {
                                     scope.taskList[index] = data;
                                 }
                             });
                         })


                     } else {   // 获取失败 
                         Msg.error("获取失败！");
                     }
                 });
             }
             scope.getStruList(); // 先调用一次
             //**************************************模版选择器**************************************//
             //保存模板  
             scope.isModelShow = false;
             scope.addModel = function () {
                 scope.isModelShow = true;
             }
             scope.addHide = function () {
                 scope.isModelShow = false;
             }
             scope.saveModel = function () {
                 scope.isModelShow = false;
                 scope.getStruList(); // 先调用一次
             }
             // 跳转分类用
             scope.playKngframe = function () {
                 $rootScope.parstr = "index.Train";
                 $rootScope.secparstr = "index.Train.kngframe";
             }
         }
     }
 } ])
/***********************************************知识结构单个文件**推荐指令内部调用*************************************************/
 .directive("knowledgeSelectorStructureSingle", ["$rootScope", "$stateParams", "$timeout", "Comm", function ($rootScope, $stateParams, $timeout, Comm) {
     return {
         restrice: "AE",
         scope: {
             knowConfig: "=", // 对接的子对象          
             onCallback: "&" //  子域中的方法
         },
         templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_structure_single.html",
         link: function (scope, element, attr) {
             scope.menuClose = function () {   // 仅关闭时候调用
                 if (!Comm.isNull(scope.knowConfig.callbackParams)) {
                     scope.knowConfig.callbackParams.isClose = true;
                 }
                 scope.knowConfig.isShow = false;
                 scope.onCallback(); // 回调方法
             }
         }
     }
 } ])
/***********************************************课程选择*************************************************/
 .directive("knowledgeSelectorCourseware", ["$timeout", "sysUserInfo", "RequestTrainService", "Comm", function ($timeout, sysUserInfo, RTS, Comm) {
     return {
         // kscList 课件列表  kscMore 是否多选
         restrice: "AE",
         scope: false,
         //  { knowConfig: "=", //单独的二级运营对象    包含： kscList 选中列表   kscMore  是否多选  onCallback 退出时的回调方便有其他的操作}
         templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_courseware.html",
         link: function (scope, element, attr) {

         //是否展示共享课程
         scope.showShareCourse=false;
         if(scope.knowConfig.showShareCourse){
            scope.showShareCourse=true;
         }
             //初始化
             scope.init = function () {
                 scope.courseList = [];
                 scope.sharecourseList=[];
                 scope.courseCount=0;
                 scope.shareCount=0;
                 scope.paramsCourse = {
                     userid: sysUserInfo.getuserinfo().user_ID,
                     orgid: sysUserInfo.getuserinfo().organization_ID,
                     powerLV: sysUserInfo.getuserinfo().powerLV,
                     screenText: "", //  搜索名称
                     screenType: "4",    // 筛选类型课程名称
                     knowledgeId: "", // 知识结构筛选
                     pageIndex: 1,
                     pageSize: 20,
                     isOwner:true,
                     orderby: "desc"
                 };
                 scope.paramsShareCourse={
                     userid: sysUserInfo.getuserinfo().user_ID,
                     orgid: sysUserInfo.getuserinfo().organization_ID,
                     powerLV: sysUserInfo.getuserinfo().powerLV,
                     screenText:"",
                     pageIndex: 1,
                     pageSize: 20
                 }

                 if (scope.knowConfig.kscList.length>0){
                    scope.knowConfig.kscList.forEach(function(data,index){
                       if(data.selectType==undefined){
                            data.selectType=1;
                       }
                       if(data.selectType==1){
                            scope.courseCount+=1;
                       }else if(data.selectType==2){
                            scope.shareCount+=1;
                       }
                    });
                 }
             }
             //默认隐藏加载更多
             scope.listmoreVisible = false;
             scope.loadMore = function () {
                 scope.paramsCourse.pageIndex = parseInt(scope.paramsCourse.pageIndex) + 1;
                 scope.getCourseList();
             }
             //回车
             scope.courseEnter = function (e) {
                 var keycode = window.event ? e.keyCode : e.which;
                 if (keycode == 13) {
                     //查询课程
                     if(scope.selectCourseType==1){
                        scope.paramsCourse.pageIndex==1
                        scope.getCourseList();
                    //查询共享课程
                     }else{
                        scope.paramsShareCourse.pageIndex==1
                        scope.getShareCourseList();
                     }
                 }
             }
             //全选
             scope.checkAll = function () {
                 var isCourseSel = true;
                 if (scope.courseCount >= scope.courseList.length) { // 取消                                          
                     isCourseSel = false;
                     scope.courseCount=0;
                 }else{
                     scope.courseCount=scope.courseList.length;
                 }
                 //只删除课程
                 if (scope.knowConfig.kscList.length>0){
                    var list=angular.copy(scope.knowConfig.kscList);
                    list.forEach(function(obj,index1){
                        if(obj.selectType==undefined||obj.selectType==1){
                             scope.knowConfig.kscList.forEach(function(data,index){
                               if(data.course_Id==obj.course_Id){
                                    scope.knowConfig.kscList.splice(index,1);
                               }
                            });
                        }
                    });
                    
                 }
                 //scope.knowConfig.kscList.length = 0;   // 必须这样清空或splice
                 // 这里必须push 不然数据不能正常使用双向绑定                
                 angular.forEach(scope.courseList, function (data, index, arr) {
                     if (isCourseSel) {//              
                         data.selectType=1;           
                         scope.knowConfig.kscList.push(data);
                     }
                     data.isSel = isCourseSel;  //全部选中/不选中   设置样式
                 });
                 
             }
             // 选中  单选、多选
             scope.checkSingle = function (cItem) {
                cItem.selectType=1;
                 if (!scope.knowConfig.kscMore) {     //单选
                     if (scope.knowConfig.windowSize == "mini") {// 小窗口
                         if (scope.knowConfig.kscList != null || scope.knowConfig.kscList.length > 0) { // 判断有没有选择
                             if (scope.knowConfig.kscList[0].course_Id == cItem.course_Id) { //判断选择的和已选的是不是同一个
                                 scope.knowConfig.kscList = [];    // 初始化
                                 cItem.isSel = false;    // 选中样式
                             } else {// 不是重新添加
                                 cItem.isSel = true;    // 选中样式
                                 scope.knowConfig.kscList = [];    // 初始化
                                 scope.knowConfig.kscList.push(cItem);  // 添加到选中的list的集合中                                                    
                             }
                         } else {//如果没有选择
                             cItem.isSel = false;    // 选中样式
                             scope.knowConfig.kscList = [];    // 初始化
                             scope.knowConfig.kscList.push(cItem);  // 添加到选中的list的集合中                                                    
                         }
                     } else {  //标准窗口
                         scope.knowConfig.kscList = [];    // 初始化
                         cItem.isSel = true;    // 选中样式
                         scope.knowConfig.kscList.push(cItem);  // 添加到选中的list的集合中                     
                         scope.knowConfig.isShow = false;  // 关闭窗口
                     }
                     if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                         scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                     }
                     scope.onCallback();
                 } else {   // 多选
                     cItem.isSel = true;  //选中样式             
                     angular.forEach(scope.knowConfig.kscList, function (data, index, array) {   //判断是不是已经选择了
                         if (data.course_Id == cItem.course_Id) {
                             scope.knowConfig.kscList.splice(index, 1);    // 如果已经有了那么删除掉  
                             cItem.isSel = false;  //选中样式                             
                         }
                     });
                     if (cItem.isSel) {
                         scope.knowConfig.kscList.push(cItem);
                         scope.courseCount+=1;
                     }else{
                        scope.courseCount-=1;
                     }
                     
                 }
             }
             scope.getListbyName = function () {
                 //查询课程
                     if(scope.selectCourseType==1){
                        scope.paramsCourse.pageIndex==1
                        scope.courseList = [];
                        scope.getCourseList();
                    //查询共享课程
                     }else{
                        scope.paramsShareCourse.pageIndex==1
                         scope.courseShareList = [];
                        scope.getShareCourseList();
                     }
             }
             // 初始化课程列表
             scope.getCourseList = function () {
                 scope.kscLoading = true;
                 RTS.findCourseinfo(scope.paramsCourse).then(function (response) {
                     scope.kscLoading = false;
                     if (response.errorcode == "0") {

                        if(scope.paramsCourse.pageIndex==1){
                            scope.courseList =response.datas;
                        }else{
                            scope.courseList = scope.courseList.concat(response.datas);
                        }
                        

                         //显示隐藏加载更多
                         if (scope.paramsCourse.pageSize * scope.paramsCourse.pageIndex < response.numCount) {
                             scope.listmoreVisible = true;
                         } else {
                             scope.listmoreVisible = false;
                         }
                         scope.setItemSel();
                     } else {
                         console.log("请求失败");
                     }
                 });
             }
             // 初始化选中
             scope.setItemSel = function () {
                 angular.forEach(scope.knowConfig.kscList, function (data, index, array) {   //判断是不是已经选择了
                     angular.forEach(scope.courseList, function (cdata, cindex, carray) { // 全部课程
                         if (data.course_Id == cdata.course_Id) {
                             cdata.isSel = true;  //选中样式                             
                         }
                     });
                 });
             }
             scope.init();
             scope.getCourseList();
             /***********************************************共享课程****************************************************/
             scope.selectCourseType=1;
             scope.changeCourseType=function(index){
                scope.selectCourseType=index;
             }
                //默认隐藏加载更多
             scope.sharemoreVisible = false;
             scope.loadMoreShare = function () {
                 scope.paramsShareCourse.pageIndex = parseInt(scope.paramsShareCourse.pageIndex) + 1;
                 scope.getShareCourseList();
             }
             //全选
             scope.checkShareAll = function () {
                 var isShareCourseSel = true;
                 if (scope.shareCount >= scope.sharecourseList.length) { // 取消                                          
                     isShareCourseSel = false;
                     scope.shareCount=0;
                 }else{
                     scope.shareCount=scope.sharecourseList.length;
                 }
                 //只删除共享课程
                 if (scope.knowConfig.kscList.length>0){
                    scope.knowConfig.kscList.forEach(function(data,index){
                       if(data.selectType==undefined){
                            data.selectType=1;
                       }
                       if(data.selectType==2){
                            scope.knowConfig.kscList.splice(index,1);
                       }
                    });
                 }
                 if (scope.knowConfig.kscList.length>0){
                    var list=angular.copy(scope.knowConfig.kscList);
                    list.forEach(function(obj,index1){
                        if(obj.selectType==undefined){
                            obj.selectType=1;
                       }
                        if(obj.selectType==2){
                             scope.knowConfig.kscList.forEach(function(data,index){
                               if(data.course_Id==obj.course_Id){
                                    scope.knowConfig.kscList.splice(index,1);
                               }
                            });
                        }
                    });
                    
                 }
                 //scope.knowConfig.kscList.length = 0;   // 必须这样清空或splice
                 // 这里必须push 不然数据不能正常使用双向绑定                
                 angular.forEach(scope.sharecourseList, function (data, index, arr) {
                     if (isShareCourseSel) {//    
                         data.selectType=2;                     
                         scope.knowConfig.kscList.push(data);
                     }
                     data.isSel = isShareCourseSel;  //全部选中/不选中   设置样式
                 });
                
             }
             // 选中  单选、多选
             scope.checkShareSingle = function (cItem) {
                 cItem.selectType=2;
                 if (!scope.knowConfig.kscMore) {     //单选
                     if (scope.knowConfig.windowSize == "mini") {// 小窗口
                         if (scope.knowConfig.kscList != null || scope.knowConfig.kscList.length > 0) { // 判断有没有选择
                             if (scope.knowConfig.kscList[0].course_Id == cItem.course_Id) { //判断选择的和已选的是不是同一个
                                 scope.knowConfig.kscList = [];    // 初始化
                                 cItem.isSel = false;    // 选中样式
                             } else {// 不是重新添加
                                 cItem.isSel = true;    // 选中样式
                                 scope.knowConfig.kscList = [];    // 初始化
                                 scope.knowConfig.kscList.push(cItem);  // 添加到选中的list的集合中                                                    
                             }
                         } else {//如果没有选择
                             cItem.isSel = false;    // 选中样式
                             scope.knowConfig.kscList = [];    // 初始化
                             scope.knowConfig.kscList.push(cItem);  // 添加到选中的list的集合中                                                    
                         }
                     } else {  //标准窗口
                         scope.knowConfig.kscList = [];    // 初始化
                         cItem.isSel = true;    // 选中样式
                         scope.knowConfig.kscList.push(cItem);  // 添加到选中的list的集合中                     
                         scope.knowConfig.isShow = false;  // 关闭窗口
                     }
                     if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                         scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                     }
                     scope.onCallback();
                 } else {   // 多选
                     cItem.isSel = true;  //选中样式             
                     angular.forEach(scope.knowConfig.kscList, function (data, index, array) {   //判断是不是已经选择了
                         if (data.course_Id == cItem.course_Id) {
                             scope.knowConfig.kscList.splice(index, 1);    // 如果已经有了那么删除掉  
                             cItem.isSel = false;  //选中样式                             
                         }
                     });
                     if (cItem.isSel) {
                         scope.knowConfig.kscList.push(cItem);
                         scope.shareCount+=1;
                     }else{
                        scope.shareCount-=1;
                     }
                 }
             }

             // 初始化课程列表
             scope.getShareCourseList = function () {
                 scope.kscLoading = true;
                 scope.paramsShareCourse.screenText=scope.paramsCourse.screenText;
                 RTS.findShareCourseinfo(scope.paramsShareCourse).then(function (response) {
                     scope.kscLoading = false;
                     if (response.errorcode == "0") {

                         if(scope.paramsShareCourse.pageIndex==1){
                            scope.sharecourseList =response.datas;
                        }else{
                            scope.sharecourseList = scope.sharecourseList.concat(response.datas);
                        }
                         //显示隐藏加载更多
                         if (scope.paramsShareCourse.pageSize * scope.paramsShareCourse.pageIndex < response.numCount) {
                             scope.sharemoreVisible = true;
                         } else {
                             scope.sharemoreVisible = false;
                         }
                         scope.setShareItemSel();
                     } else {
                         console.log("请求失败");
                     }
                 });
             }
             // 初始化选中
             scope.setShareItemSel = function () {
                 angular.forEach(scope.knowConfig.kscList, function (data, index, array) {   //判断是不是已经选择了
                     angular.forEach(scope.sharecourseList, function (cdata, cindex, carray) { // 全部课程
                         if (data.course_Id == cdata.course_Id) {
                             cdata.isSel = true;  //选中样式                             
                         }
                     });
                 });
             }
             //需要共享课程再查询
             if(scope.showShareCourse){
                scope.getShareCourseList();
             }
             
             /********************************************** 知识结构调用***************************************/
             // 配置参数
             scope.nodeStructure = {
                 menu: ["structure"],
                 kssMore: false, //知识结构 是否多选
                 kssList: [],    // 知识结构选中列表                               
                 isShow: false,  // 显示知识选择器
                 callbackParams: { // 回到参数
                     isClose: true // 默认通过窗口关闭
                 }
             };
             // 回调方法
             scope.onStructureToCourseware = function () {
                 if (!scope.nodeStructure.callbackParams.isClose) {  //如果没有通过窗口关闭那么就进行查询
                     scope.paramsCourse.screenText = "";    // 知识结构查询的时候不进行课程名称的筛选
                     scope.paramsCourse.knowledgeId = scope.nodeStructure.kssList[0].knowledge_Id;         // 传入知识结构id       
                     scope.courseList = [];
                     // 发送请求
                     scope.getCourseList();
                 }
             }
             // 撤销知识结构筛选
             scope.cStructureSerchClose = function () {
                 scope.paramsCourse.screenText = "";    // 知识结构查询的时候不进行课程名称的筛选
                 scope.nodeStructure.kssList = []; // 初始化
                 scope.paramsCourse.knowledgeId = "";         // 传入知识结构id            
                 scope.courseList = [];
                 // 发送请求
                 scope.getCourseList();
             }
             //打开知识结构选择器
             scope.openSingleStructure = function () {
                 scope.nodeStructure.isShow = true;
             }
         }
     }
 } ])

/***********************************************试卷选择*************************************************/
  .directive("knowledgeSelectorExamination", ["$timeout", "sysUserInfo", "RequestTrainService", "Comm", function ($timeout, sysUserInfo, RTS, Comm) {
      return {
          // kseList 试卷列表  kseMore 是否多选
          restrice: "AE",
          scope: false,
          //  { knowConfig: "=", //单独的二级运营对象    包含： kseList 选中列表   kseMore  是否多选  onCallback 退出时的回调方便有其他的操作}
          templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_examination.html",
          link: function (scope, element, attr) {
              //初始化
              scope.init = function () {
                  scope.examList = [];
                  scope.paramsExam = {
                      userid: sysUserInfo.getuserinfo().user_ID,
                      orgid: sysUserInfo.getuserinfo().organization_ID,
                      powerLV: sysUserInfo.getuserinfo().powerLV,
                      searchText: "", //  搜索名称
                      knowledgeId: "", // 知识结构筛选   
                      pageIndex: 1,
                      pageSize: 20
                  };
              }
              //显示加载更多
              scope.listmoreVisible = false;
              //回车
              scope.examEnter = function (e) {
                  var keycode = window.event ? e.keyCode : e.which;
                  if (keycode == 13) {
                      scope.examList = [];
                      scope.getExamList();
                  }
              }
              scope.loadMore = function () {
                  scope.paramsExam.pageIndex = parseInt(scope.paramsExam.pageIndex) + 1;
                  scope.getExamList();
              }
              //全选
              scope.checkAll = function () {
                  var isExamSel = true;
                  if (scope.knowConfig.kseList != null && scope.knowConfig.kseList.length >= scope.examList.length) { // 取消                        
                      isExamSel = false;
                  }
                  scope.knowConfig.kseList.length = 0; // 必须这样清空 或splice
                  // 这里必须push 不然数据不能正常使用双向绑定
                  angular.forEach(scope.examList, function (data, index, arr) {
                      if (isExamSel)// 全选
                          scope.knowConfig.kseList.push(data);
                      data.isSel = isExamSel;   //全部选中/不选中   设置样式
                  });
              }
              // 选中  单选、多选
              scope.checkSingle = function (eItem) {
                  if (!scope.knowConfig.kseMore) {     //单选
                      if (scope.knowConfig.windowSize == "mini") {// 小窗口
                          if (scope.knowConfig.kseList != null || scope.knowConfig.kseList.length > 0) { // 判断有没有选择
                              if (scope.knowConfig.kseList[0].paperId == eItem.paperId) { //判断选择的和已选的是不是同一个
                                  scope.knowConfig.kseList = [];    // 初始化
                                  eItem.isSel = false;    // 选中样式
                              } else {// 不是重新添加
                                  eItem.isSel = true;    // 选中样式
                                  scope.knowConfig.kseList = [];    // 初始化
                                  scope.knowConfig.kseList.push(eItem);  // 添加到选中的list的集合中                                                    
                              }
                          } else {//如果没有选择
                              eItem.isSel = false;    // 选中样式
                              scope.knowConfig.kseList = [];    // 初始化
                              scope.knowConfig.kseList.push(eItem);  // 添加到选中的list的集合中                                                    
                          }
                      } else {  //标准窗口
                          scope.knowConfig.kseList = [];    // 初始化
                          eItem.isSel = true;    // 选中样式
                          scope.knowConfig.kseList.push(eItem);  // 添加到选中的list的集合中
                          scope.knowConfig.isShow = false;  // 关闭窗口
                      }
                      if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                          scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                      }
                      scope.onCallback();
                  } else {   // 多选
                      eItem.isSel = true;  //选中样式             
                      angular.forEach(scope.knowConfig.kseList, function (data, index, array) {   //判断是不是已经选择了
                          if (data.paperId == eItem.paperId) {
                              scope.knowConfig.kseList.splice(index, 1);    // 如果已经有了那么删除掉  
                              eItem.isSel = false;  //选中样式                             
                          }
                      });
                      if (eItem.isSel) {
                          scope.knowConfig.kseList.push(eItem);
                      }
                  }
              }
              //更具名称搜索
              scope.getListbyName = function () {
                  scope.examList = [];
                  scope.getExamList();
              }
              // 初始化试卷列表
              scope.getExamList = function () {
                  scope.kseLoading = true;
                  console.log(scope.paramsExam);

                  RTS.findExamName(scope.paramsExam).then(function (response) {
                      scope.kseLoading = false;
                      if (response.errorcode == "0") {
                          scope.examList = scope.examList.concat(response.datas);
                          scope.setItemSel();
                          if (scope.paramsExam.pageSize * scope.paramsExam.pageIndex < response.numCount) {
                              scope.listmoreVisible = true;
                          } else {
                              scope.listmoreVisible = false;
                          }
                      } else {
                          console.log("请求失败");
                      }
                  });
              }
              // 初始化选中
              scope.setItemSel = function () {
                  angular.forEach(scope.knowConfig.kseList, function (data, index, array) {   //判断是不是已经选择了
                      angular.forEach(scope.examList, function (edata, cindex, carray) { // 全部课程
                          if (data.paperId == edata.paperId) {
                              edata.isSel = true;  //选中样式                             
                          }
                      });
                  });
              }
              scope.init();
              scope.getExamList();
              /********************************************** 知识结构调用***************************************/
              // 配置参数
              scope.nodeStructure = {
                  menu: ["structure"],
                  kssMore: false, //知识结构 是否多选
                  kssList: [],    // 知识结构选中列表                               
                  isShow: false,  // 显示知识选择器
                  callbackParams: { // 回到参数
                      isClose: true // 默认通过窗口关闭
                  }
              };
              // 回调方法
              scope.onStructureToExamination = function () {
                  if (!scope.nodeStructure.callbackParams.isClose) {  //如果没有通过窗口关闭那么就进行查询
                      scope.paramsExam.searchText = "";    // 知识结构查询的时候不进行课程名称的筛选
                      scope.paramsExam.knowledgeId = scope.nodeStructure.kssList[0].knowledge_Id;         // 传入知识结构id     
                      scope.examList = [];
                      // 发送请求
                      scope.getExamList();
                      console.log(scope.nodeStructure);
                  }
              }
              // 撤销知识结构筛选
              scope.eStructureSerchClose = function () {
                  scope.paramsExam.searchText = "";    // 知识结构查询的时候不进行试卷名称的筛选
                  scope.nodeStructure.kssList = []; // 初始化
                  scope.paramsExam.knowledgeId = "";         // 传入知识结构id           
                  scope.examList = [];
                  // 发送请求
                  scope.getExamList();
              }
              //打开知识结构选择器
              scope.openSingleStructure = function () {
                  scope.nodeStructure.isShow = true;
              }
          }
      }
  } ])
  /***********************************************试卷选择*************************************************/
  .directive("knowledgeSelectorExternalpaper", ["$timeout", "sysUserInfo", "RequestTrainService", "Comm", function ($timeout, sysUserInfo, RTS, Comm) {
      return {
          // expList 试卷列表  expMore 是否多选
          restrice: "AE",
          scope: false,
          //  { knowConfig: "=", //单独的二级运营对象    包含： expList 选中列表   expMore  是否多选  onCallback 退出时的回调方便有其他的操作}
          templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_externalpaper.html",
          link: function (scope, element, attr) {
              //初始化
              scope.init = function () {
                  scope.epaperList = [];
                  scope.paramsPaper = {
                      userid: sysUserInfo.getuserinfo().user_ID,
                      orgid: sysUserInfo.getuserinfo().organization_ID,
                      name: "", //  搜索名称
                      pageIndex: 1,
                      pageSize: 20
                  };
              }
              //显示加载更多
              scope.listmoreVisible = false;
              //回车
              scope.examEnter = function (e) {
                  var keycode = window.event ? e.keyCode : e.which;
                  if (keycode == 13) {
                      scope.epaperList = [];
                      scope.getepaperList();
                  }
              }
              scope.loadMore = function () {
                  scope.paramsPaper.pageIndex = parseInt(scope.paramsPaper.pageIndex) + 1;
                  scope.getepaperList();
              }
              //全选
              scope.checkAll = function () {
                  var isExamSel = true;
                  if (scope.knowConfig.expList != null && scope.knowConfig.expList.length >= scope.epaperList.length) { // 取消                        
                      isExamSel = false;
                  }
                  scope.knowConfig.expList.length = 0; // 必须这样清空 或splice
                  // 这里必须push 不然数据不能正常使用双向绑定
                  angular.forEach(scope.epaperList, function (data, index, arr) {
                      if (isExamSel)// 全选
                          scope.knowConfig.expList.push(data);
                      data.isSel = isExamSel;   //全部选中/不选中   设置样式
                  });
              }
              // 选中  单选、多选
              scope.checkSingle = function (eItem) {
                  if (!scope.knowConfig.expMore) {     //单选
                      if (scope.knowConfig.windowSize == "mini") {// 小窗口
                          if (scope.knowConfig.expList != null || scope.knowConfig.expList.length > 0) { // 判断有没有选择
                              if (scope.knowConfig.expList[0].paperId == eItem.paperId) { //判断选择的和已选的是不是同一个
                                  scope.knowConfig.expList = [];    // 初始化
                                  eItem.isSel = false;    // 选中样式
                              } else {// 不是重新添加
                                  eItem.isSel = true;    // 选中样式
                                  scope.knowConfig.expList = [];    // 初始化
                                  scope.knowConfig.expList.push(eItem);  // 添加到选中的list的集合中                                                    
                              }
                          } else {//如果没有选择
                              eItem.isSel = false;    // 选中样式
                              scope.knowConfig.expList = [];    // 初始化
                              scope.knowConfig.expList.push(eItem);  // 添加到选中的list的集合中                                                    
                          }
                      } else {  //标准窗口
                          scope.knowConfig.expList = [];    // 初始化
                          eItem.isSel = true;    // 选中样式
                          scope.knowConfig.expList.push(eItem);  // 添加到选中的list的集合中
                          scope.knowConfig.isShow = false;  // 关闭窗口
                      }
                      if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                          scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                      }
                      scope.onCallback();
                  } else {   // 多选
                      eItem.isSel = true;  //选中样式             
                      angular.forEach(scope.knowConfig.expList, function (data, index, array) {   //判断是不是已经选择了
                          if (data.externalId == eItem.externalId) {
                              scope.knowConfig.expList.splice(index, 1);    // 如果已经有了那么删除掉  
                              eItem.isSel = false;  //选中样式                             
                          }
                      });
                      if (eItem.isSel) {
                          scope.knowConfig.expList.push(eItem);
                      }
                  }
              }
              //更具名称搜索
              scope.getListbyName = function () {
                  scope.epaperList = [];
                  scope.getepaperList();
              }
              // 初始化试卷列表
              scope.getepaperList = function () {
                  scope.expLoading = true;
                  console.log(scope.paramsPaper);

                  RTS.findEexternalPage(scope.paramsPaper).then(function (response) {
                      scope.expLoading = false;
                      if (response.errorcode == "0") {
                          scope.epaperList = scope.epaperList.concat(response.datas);
                          scope.setItemSel();
                          if (scope.paramsPaper.pageSize * scope.paramsPaper.pageIndex < response.numCount) {
                              scope.listmoreVisible = true;
                          } else {
                              scope.listmoreVisible = false;
                          }
                      } else {
                          console.log("请求失败");
                      }
                  });
              }
              // 初始化选中
              scope.setItemSel = function () {
                  angular.forEach(scope.knowConfig.expList, function (data, index, array) {   //判断是不是已经选择了
                      angular.forEach(scope.epaperList, function (edata, cindex, carray) { // 全部课程
                          if (data.externalId == edata.externalId) {
                              edata.isSel = true;  //选中样式                             
                          }
                      });
                  });
              }
              scope.init();
              scope.getepaperList();
          }
      }
  } ])
/***********************************************文件*************************************************/
 .directive("knowledgeSelectorFile", ["sysUserInfo", "RequestTrainService", "Comm", "Msg", function (sysUserInfo, RTS, Comm, Msg) {
     return {
         restrice: "AE",
         scope: false,
         templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_file.html",
         link: function (scope, element, attr) {
            //scope.knowConfig.clear;选中不会有样式
             //初始化
             scope.init = function () {
                 scope.isOpen = true;
                 //文件属性标签
                 scope.extend = { "oldtag": RTS.getOldTagList(), "newtag": [{ "index": "0", "tagid": "0", "tagname": "全部标签", "tagcolor": "#icon-biaoqiantoumingquanbu"}] };
                 // 面包屑
                 scope.crumbsFList = []; 
                 scope.fileLoading = false; //文件加载中
                 // 文件列表
                 scope.fileList = [];

                 // 是否查询共享文件
                 scope.shareFlag = false;
                 // 是否显示共享文件内容
                 scope.shareShow = false;
                 // 排序条件
                 scope.serFileObj = { serName: "创建时间", serOrderBy: "desc" };
                 //  人员信息 
                 scope.userInfo = sysUserInfo.getuserinfo();
                 //标签筛选条件
                 scope.serTagObj = { serTagId: "0", serTagColor: "#icon-biaoqiantoumingquanbu", serTagName: "全部标签" };
                 scope.paramsFile = {
                     "xid": scope.quanxianid(),
                     "userid": scope.userInfo.user_ID,
                     "fid": "0",
                     "orgid": scope.userInfo.organization_ID,
                     "powerLV": scope.userInfo.powerLV,
                     "searchText": "",
                     "pageIndex": "1",
                     "pageSize": "20000",
                     "searchType": "3",
                     "tagid": "",
                     "fileType": "", //folder
                     "orderby": "desc",
                     "Shares": "", //0是1否
                     "type": scope.knowConfig.ksfType ? scope.knowConfig.ksfType : ""  // 0为全部 1文档 2 视频 3 文件夹
                 };
                scope.Othershareparam = { 
                    "xid": scope.paramsFile.xid, 
                    "orgid": sysUserInfo.getuserinfo().organization_ID, 
                    "searchText": "", 
                    "searchType": "3", 
                    "pageIndex": 1, 
                    "pageSize": 20, 
                    "fid": "" 
                };
                 // 原标签
                 scope.oldTagLable = scope.extend.oldtag;
                 scope.oldTagLable.push(scope.extend.newtag[0]);
                 scope.userLableParam = { userid: sysUserInfo.getuserinfo().user_ID, orgid: sysUserInfo.getuserinfo().organization_ID };
                 // 获取个人标签
                 RTS.gettaglist(scope.userLableParam).then(function (tagData) {
                     if (tagData.errorcode == 0) {
                         //系统标签和用户标签组合
                         if (tagData.datas.length > 0) {
                             angular.forEach(scope.oldTagLable, function (tagInfo, index) {
                                 for (var i = 0; i < tagData.datas.length; i++) {
                                     if (tagData.datas[i].tagid == scope.oldTagLable[index].tagid) {
                                         scope.oldTagLable.splice(index, 1, tagData.datas[i]);
                                     }
                                 }
                             });
                         }
                     } else {
                         console.log("directive---标签加载失败！");
                     }
                 });
             }
             scope.quanxianid = function () {
                var qxid = [];
                //组织结构 ID 字符串
                if (sysUserInfo.getuserinfo().userOrgList != undefined && sysUserInfo.getuserinfo().userOrgList.length > 0) {
                    for (var i = 0; i < sysUserInfo.getuserinfo().userOrgList.length; i++) {
                        qxid.push(sysUserInfo.getuserinfo().userOrgList[i]["organization_ID"]);
                    }
                }
                //权限 ID 字符串
                if (sysUserInfo.getuserinfo().userRoleList != undefined && sysUserInfo.getuserinfo().userRoleList.length > 0) {
                    for (var i = 0; i < sysUserInfo.getuserinfo().userRoleList.length; i++) {
                        qxid.push(sysUserInfo.getuserinfo().userRoleList[i]["roles_ID"]);
                    }
                }
                //用户组 ID 字符串
                if (sysUserInfo.getuserinfo().userGroupList != undefined && sysUserInfo.getuserinfo().userGroupList.length > 0) {
                    for (var i = 0; i < sysUserInfo.getuserinfo().userGroupList.length; i++) {
                        qxid.push(sysUserInfo.getuserinfo().userGroupList[i]["userGroup_ID"]);
                    }
                }
                qxid.push(sysUserInfo.getuserinfo().user_ID);
                return qxid.join(",");
            }
             // 判断图片显示
             scope.isImg = function (pathImg) {
                 var ImgObj = new Image();
                 ImgObj.src = pathImg;
                 if (ImgObj.fileSize > 0 || (ImgObj.width > 0 && ImgObj.height > 0)) {
                     return true;
                 } else {
                     return false;
                 }
             }
             scope.tagScreenShow = false;
             // 标签筛选
             scope.tagCheckSer = function (tItem) {
                 scope.tagScreenShow = false;
                 if (tItem.tagid != scope.serTagObj.serTagId) {   // 判断是不是和之前的查询一致
                     scope.serTagObj.serTagId = tItem.tagid;
                     scope.serTagObj.serTagColor = tItem.tagcolor;
                     scope.serTagObj.serTagName = tItem.tagname;
                     if (tItem.tagid == "0") {
                         scope.paramsFile.tagid = "";
                     } else {
                         scope.paramsFile.tagid = tItem.tagid;
                     }
                     // 面包屑为空
                     scope.crumbsFList = [];
                     // 设置基本参数
                     scope.paramsFile.fid = "0";
                     scope.serFileObj = { serName: "创建时间", serOrderBy: "desc" };
                     // 发送请求
                     scope.getFileList();
                 }
             }
             // 筛选
             scope.upType = function (flag) {
                 scope.upDopSort = false;
                 //判断是不是上次的排序
                 if (scope.paramsFile.searchType == flag) {
                     if (scope.paramsFile.orderby == "") {  //判断排列顺序 如果再次点击则换序
                         scope.paramsFile.orderby = "desc";  //请求参数
                         scope.serFileObj.serOrderBy = "desc";
                     } else {
                         scope.paramsFile.orderby = "";  // 请求参数
                         scope.serFileObj.serOrderBy = "";
                     }
                 } else {
                     switch (flag) {
                         case 1: // 文件名称                   
                             scope.serFileObj.serName = "文件名称";
                             scope.paramsFile.searchType = 1;
                             break;
                         case 3: //文件创建时间
                             scope.serFileObj.serName = "创建时间";
                             scope.paramsFile.searchType = 3;
                             break;
                         case 4: //文件修改时间
                             scope.serFileObj.serName = "修改时间";
                             scope.paramsFile.searchType = 4;
                             break;
                     }
                     scope.paramsFile.orderby = "";     // 请求参数
                     scope.serFileObj.serOrderBy = ""; //页面                 
                 }
                 if (scope.shareShow) {
                     scope.selectShareFile();
                 } else {
                     scope.getFileList();    //发送请求
                 }
             }
             //获取文件对应的标签
             scope.getFileTagList = function (tagIds) {
                 var tagList = [];
                 if (tagIds != undefined && tagIds != "") {
                     angular.forEach(scope.extend.oldtag, function (tagInfo, index) {
                         if (tagIds.indexOf(scope.extend.oldtag[index].tagId) >= 0) {
                             if (tagList.length >= 3) {
                                 //break;   前台只显示3个标签图标
                             } else {
                                 tagList.push(scope.extend.oldtag[index]);
                             }
                         }
                     });
                 }
                 return tagList;
             }
             //回车
             scope.fileEnter = function (e) {
                 var keycode = window.event ? e.keyCode : e.which;
                 if (keycode == 13) {
                     scope.getFileList();
                 }
             }
             scope.checkAll = function () {
                 //计算文件数量
                 var fileNum = 0;
                 angular.forEach(scope.fileList, function (data, index) {
                     if (data.fileType != "folder") {
                         fileNum++;
                     }
                 });
                 if (fileNum <= scope.knowConfig.ksfList.length) {
                     scope.knowConfig.ksfList = [];
                     angular.forEach(scope.fileList, function (data, index) {
                         data.isSel = false;
                     });
                 } else {
                     angular.forEach(scope.fileList, function (data, index) {
                         if (data.fileType != "folder") {
                             scope.knowConfig.ksfList.push(data);
                             data.isSel = true;
                         }
                     });
                 }
             }
             // 选择文件/进入文件夹
             scope.fileCheckClick = function (fItem) {
                 if (scope.fileLoading) // 如果在加载的时候不让其再访问
                     return;
                 
                 if (fItem.fileType == "Share") {
                     scope.selectShareFile();
                 } else if (fItem.fileType == "OtherShare") {
                     scope.selectOtherShareFile();
                 } else if (fItem.fileType == "folder") { // 文件夹 Share

                    scope.paramsFile.fid = fItem.upId;
                    // 查找在没有在
                    var isVisi = -1;
                    angular.forEach(scope.crumbsFList, function (data, index, arr) {
                        if (data.upId == fItem.upId) { //之前进入过此文件夹
                            isVisi = index;
                        }
                    });
                    if (isVisi == -1) {
                        scope.crumbsFList.push(fItem);
                    } else {
                        // 删除面包屑                        
                        scope.crumbsFList.splice(isVisi + 1, scope.crumbsFList.length - (isVisi + 1));
                    }
                    //在共享里面
                    scope.getFileList();
                 } else {  //文件
                     if (!scope.knowConfig.ksfMore) {     //单选
                         if (scope.knowConfig.windowSize == "mini") {// 小窗口
                             if (scope.knowConfig.ksfList != null || scope.knowConfig.ksfList.length > 0) { // 判断有没有选择
                                 if (scope.knowConfig.ksfList[0].upId == fItem.upId) { //判断选择的和已选的是不是同一个
                                     scope.knowConfig.ksfList = [];    // 初始化
                                     fItem.isSel = false;    // 选中样式
                                 } else {// 不是重新添加
                                    if(!scope.knowConfig.clear){
                                        fItem.isSel = true;    // 选中样式
                                     }
                                     scope.knowConfig.ksfList = [];    // 初始化
                                     scope.knowConfig.ksfList.push(fItem);  // 添加到选中的list的集合中                                                    
                                 }
                             } else {//如果没有选择
                                 fItem.isSel = false;    // 选中样式
                                 scope.knowConfig.ksfList = [];    // 初始化
                                 scope.knowConfig.ksfList.push(fItem);  // 添加到选中的list的集合中                                                    
                             }
                         } else {  //标准窗口
                             scope.knowConfig.ksfList = [];    // 初始化
                             if(!scope.knowConfig.clear){
                                fItem.isSel = true;    // 选中样式
                            }
                             scope.knowConfig.ksfList.push(fItem);  // 添加到选中的list的集合中                         
                             scope.knowConfig.isShow = false;  // 关闭窗口
                         }
                         if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                             scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                         }
                         scope.onCallback();
                     } else {   // 多选
                         fItem.isSel = true;  //选中样式             
                         angular.forEach(scope.knowConfig.ksfList, function (data, index, array) {   //判断是不是已经选择了
                             if (data.upId == fItem.upId) {
                                 scope.knowConfig.ksfList.splice(index, 1);    // 如果已经有了那么删除掉  
                                 fItem.isSel = false;  //选中样式                             
                             }
                         });
                         if (fItem.isSel) {
                             scope.knowConfig.ksfList.push(fItem);
                         }
                     }
                 }
             }
             // 共享文件对象
             scope.ShareFile = {
                 fileName: "企业共享文件夹",
                 fileType: "Share",
                 upId: "woshigongxiangwenjian"
             }
             scope.selectShareFile = function (ShareFile) {
                 scope.paramsFile.fid = "";
                 scope.shareFlag = true;    // 查询方式
                 scope.shareShow = true;    // 共享显示
                 scope.OthershareShow = false;    // 共享显示
                 // 面包屑操作
                 scope.crumbsFList = [{ fileName: "企业共享文件夹", fileType: "Share", upId: "woshigongxiangwenjian"}];
                 scope.serFileObj = { serName: "文件创建时间", serOrderBy: "desc" };
                 //标签筛选条件
                 scope.paramsFile.tagid = "";
                 scope.serTagObj = { serTagId: "0", serTagColor: "#icon-biaoqiantoumingquanbu", serTagName: "全部标签" };
                 scope.getFileList();
             }

            // 外部共享文件对象
             scope.OtherShareFile = {
                 fileName: "外部共享文件夹",
                 fileType: "OtherShare",
                 upId: "woshiwaibugongxiangwenjian"
             }
             scope.selectOtherShareFile = function () {
                 scope.paramsFile.fid = "";
                 scope.shareFlag = true;    // 查询方式
                 scope.shareShow = true;    // 共享显示
                 scope.OthershareShow = true;    // 共享显示
                 scope.Othershareparam.searchText="";
                 // 面包屑操作
                 scope.crumbsFList = [{ fileName: "外部共享文件夹", fileType: "OtherShare", upId: "woshiwaibugongxiangwenjian"}];
                 scope.serFileObj = { serName: "文件创建时间", serOrderBy: "desc" };
                 //标签筛选条件
                 scope.paramsFile.tagid = "";
                 scope.serTagObj = { serTagId: "0", serTagColor: "#icon-biaoqiantoumingquanbu", serTagName: "全部标签" };
                 RTS.AlreaSharOperatefile(scope.Othershareparam).then(function (response) {
                     scope.fileLoading = false;
                     if (response.errorcode == 0) {
                         scope.fileList = response.datas;
                         scope.setItemSel();
                     } else {
                         console.log(response.errorcode);
                     }
                 }, function callback() {
                     Msg.error("请求数据异常！");
                 });
             }

             // 回到主目录
             scope.selectAllFile = function (fid) {
                 scope.paramsFile.fid = fid;
                 scope.shareFlag = false;    // 查询方式
                 scope.shareShow = false;    // 共享显示
                 scope.OthershareShow = false;    // 共享显示
                 //面包屑操作
                 scope.crumbsFList = [];
                 scope.serFileObj = { serName: "文件创建时间", serOrderBy: "desc" };
                 //标签筛选条件
                 scope.paramsFile.tagid = "";
                 scope.serTagObj = { serTagId: "0", serTagColor: "#icon-biaoqiantoumingquanbu", serTagName: "全部标签" };
                 scope.getFileList();
             }
             // 获取文件列表 queryFileType    getFileList       
             scope.getFileList = function () {
                 scope.fileLoading = true;
                 if (scope.shareFlag) {    // 查询共享文件      

                        // if(scope.OthershareShow){

                        //     scope.Othershareparam.fid= scope.paramsFile.fid;
                        //     scope.Othershareparam.searchText=scope.paramsFile.searchText;
                        //     RTS.AlreaSharOperatefile(scope.Othershareparam).then(function (response) {
                        //          scope.fileLoading = false;
                        //          if (response.errorcode == 0) {
                        //              scope.fileList = response.datas;
                        //              scope.setItemSel();
                        //          } else {
                        //              console.log(response.errorcode);
                        //          }
                        //      }, function callback() {
                        //          Msg.error("请求数据异常！");
                        //      });
                        // }else{
                            RTS.getSharelist(scope.paramsFile).then(function (response) {
                                 scope.fileLoading = false;
                                 if (response.errorcode == 0) {
                                     scope.fileList = response.datas;
                                     scope.setItemSel();
                                 } else {
                                     console.log(response.errorcode);
                                 }
                             }, function callback() {
                                 Msg.error("请求数据异常！");
                             });
                        // }
                        

                         

                 } else {
                     //查询非共享文件
                     RTS.queryFileType(scope.paramsFile).then(function (response) {
                         scope.fileLoading = false;
                         if (response.errorcode == "0") {
                             scope.fileList = response.datas;
                             scope.setItemSel();
                         } else {
                             console.log("请求数据有误！");
                         }
                     }, function callback() {
                         console.log("请求连接不上服务器");
                     });
                 }

             }
             // 初始化选中
             scope.setItemSel = function () {
                 angular.forEach(scope.knowConfig.ksfList, function (data, index, array) {   //判断是不是已经选择了
                     angular.forEach(scope.fileList, function (edata, cindex, carray) { // 全部文件
                         if (data.upId == edata.upId) {
                             edata.isSel = true;  //选中样式                             
                         }
                     });
                 });
             }
             scope.init();
             scope.getFileList();
             /**********创建文件夹开始**********/

             // 创建文件夹
             scope.showCreateFolder = false;
             // 创建文件夹参数
             scope.createFolderParams = {
                 upUserId: sysUserInfo.getuserinfo().user_ID,
                 upOrgId: sysUserInfo.getuserinfo().organization_ID,
                 userName: sysUserInfo.getuserinfo().username,
                 fileName: "",
                 filepath: "/", //文件父级路径
                 fid: "0",  // 文件父id
                 upId: "0"   // 文件上传id         
             };
             // 快捷键创建文件夹
             scope.saveFolderKeyUp = function (e) {
                 var keycode = window.event ? e.keyCode : e.which;
                 if (keycode == 13) {
                     scope.saveFolder();
                 }
             }
             // 打开创建文件夹弹框
             scope.createFolder = function () {
                 //                if (scope.showinfo.sharequer||scope.sosoText) {
                 //                    Msg.info("此操作情况下不能创建文件夹！");
                 //                } else {                    
                 scope.showCreateFolder = true;
                 if (scope.crumbsFList.length > 0) { // 如果不是根目录
                     scope.createFolderParams.fid = scope.crumbsFList[scope.crumbsFList.length - 1].upId;
                     var filePathUrl = scope.crumbsFList[scope.crumbsFList.length - 1].filepath;
                     if (filePathUrl == undefined || filePathUrl == null || filePathUrl == "" || filePathUrl == "/") {
                         filePathUrl = "/" + scope.crumbsFList[scope.crumbsFList.length - 1].fileName
                     } else {
                         filePathUrl = scope.crumbsFList[scope.crumbsFList.length - 1].filepath + "/" + scope.crumbsFList[scope.crumbsFList.length - 1].fileName;
                     }
                     scope.createFolderParams.filepath = filePathUrl;
                 }
                 //                }
             }
             // 保存按钮的loading
             scope.isBtnLoad = false;
             // 保存文件夹
             scope.saveFolder = function () {
                 if (scope.createFolderParams.fileName.length == 0) {
                     Msg.info("文件夹名称不能为空！");
                     return;
                 }
                 scope.isBtnLoad = true;
                 RTS.CreateFolder(scope.createFolderParams).then(function (fdata) {
                     scope.isBtnLoad = false;
                     if (fdata.errorcode == 0) {
                         scope.showCreateFolder = false;
                         scope.fileList.push(fdata.data);
                         Msg.success("保存成功！", "创建文件夹:" + fdata.data.fileName);
                     } else if (fdata.errorcode == 29) {
                         Msg.info("文件或文件夹名称已经存在");
                     } else {
                         Msg.error("操作失败！");
                     }
                 }, function callback() {
                     Msg.error("请求数据异常！");
                 });
             }
             // 关闭弹框
             scope.closeFolder = function () {
                 scope.showCreateFolder = false;
             }
             /**********文件上传开始**********/
             // 调用全局的文件上传
             scope.allPlayUpload = function () {
                 if (scope.knowConfig.ksfType == "1") {
                     Msg.info("提示", "请上传文档类型文件否则显示不出来,您可以去资料内查看此文件");
                 }
                 if (scope.knowConfig.ksfType == "2") {
                     Msg.info("提示", "请上传视频类型文件否则显示不出来,您可以去资料内查看此文件");
                 }
                 scope.UploadParams = { //上传必要的参数
                     obj: this, // angular 对象
                     apply: scope.$apply,  //文件刷新
                     userobj: sysUserInfo.getuserinfo(),
                     list: scope.fileList,   //文件列表   
                     fobj: scope.crumbsFList.length > 0 ? scope.crumbsFList[scope.crumbsFList.length - 1] : null, // 父级对象   
                     optype: 1, // 1 新增 2更新    
                     msg: Msg,
                     accept: [{      //支持文件上传的类型
                         title: 'Images',
                         extensions: 'gif,jpg,jpeg,bmp,png',
                         mimeTypes: 'image/*'
                     }],
                     callbackFun: scope.getFileList    //回调方法参数
                 };
                 //调用文件上传的 主接口 在主框架中
                 allSelectFileObj(scope.UploadParams);
             }

         },
         controller: function ($scope, $document) {
             //点击非指定区域，关闭显示层
             $document.bind("click", function (evt) {
                 var evt = window.event ? window.event : evt,
                target = evt.srcElement || evt.target;
                 var sortFlag = false; // 排序
                 var tagFlag = false; // 标签
                 if ($document[0].getElementById("sortSerList") != null) {
                     sortFlag = $document[0].getElementById("sortSerList").contains(target);                    // 包含排序                
                 }
                 if ($document[0].getElementById("tagSerList") != null) {
                     tagFlag = $document[0].getElementById("tagSerList").contains(target);                    // 包含排序                
                 }
                 if (!sortFlag) {// 不在排序中                   
                     $scope.$apply(function () {
                         $scope.upDopSort = false;
                     });
                 }
                 if (!tagFlag) {   //不在标签中
                     $scope.$apply(function () {
                         $scope.tagScreenShow = false;
                     });
                 }
             });
         }
     }
 } ])
 /*************************************************************直播******************************************************** */
 .directive("knowledgeSelectorLive", ["$timeout", "sysUserInfo", "RequestTrainService", "Comm", function ($timeout, sysUserInfo, RTS, Comm) {
    return {
        // liveList 试卷列表  expMore 是否多选
        restrice: "AE",
        scope: false,
        //  { knowConfig: "=", //单独的二级运营对象    包含： liveList 选中列表   expMore  是否多选  onCallback 退出时的回调方便有其他的操作}
        templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_live.html",
        link: function (scope, element, attr) {
            //初始化
            scope.init = function () {
                scope.liveList = [];
                scope.paramsLive = {
                    userid: sysUserInfo.getuserinfo().user_ID,
                    createOid:sysUserInfo.getuserinfo().organization_ID,
                    liveName: "",// 直播
                    current:1,
                    size:10
        
                }
            }
            //显示加载更多
            scope.listmoreVisible = false;
            //回车
            scope.liveEnter = function (e) {
                var keycode = window.event ? e.keyCode : e.which;
                if (keycode == 13) {
                    scope.liveList = [];
                    scope.getliveList();
                }
            }
            scope.loadMore = function () {
                scope.paramsLive.current = parseInt(scope.paramsLive.current) + 1;
                scope.getliveList();
            }
            //全选
            scope.checkAll = function () {
                var isLiveSel = true;
                if (scope.knowConfig.liveList != null && scope.knowConfig.liveList.length >= scope.liveList.length) { // 取消                        
                    isLiveSel = false;
                }
                scope.knowConfig.liveList.length = 0; // 必须这样清空 或splice
                // 这里必须push 不然数据不能正常使用双向绑定
                angular.forEach(scope.liveList, function (data, index, arr) {
                    if (isLiveSel)// 全选
                        scope.knowConfig.liveList.push(data);
                    data.isSel = isLiveSel;   //全部选中/不选中   设置样式
                });
            }
            // 选中  单选、多选
            scope.checkSingle = function (eItem) {
                if (!scope.knowConfig.expMore) {     //单选
                    if (scope.knowConfig.windowSize == "mini") {// 小窗口
                        if (scope.knowConfig.liveList != null || scope.knowConfig.liveList.length > 0) { // 判断有没有选择
                            if (scope.knowConfig.liveList[0].paperId == eItem.paperId) { //判断选择的和已选的是不是同一个
                                scope.knowConfig.liveList = [];    // 初始化
                                eItem.isSel = false;    // 选中样式
                            } else {// 不是重新添加
                                eItem.isSel = true;    // 选中样式
                                scope.knowConfig.liveList = [];    // 初始化
                                scope.knowConfig.liveList.push(eItem);  // 添加到选中的list的集合中                                                    
                            }
                        } else {//如果没有选择
                            eItem.isSel = false;    // 选中样式
                            scope.knowConfig.liveList = [];    // 初始化
                            scope.knowConfig.liveList.push(eItem);  // 添加到选中的list的集合中                                                    
                        }
                    } else {  //标准窗口
                        scope.knowConfig.liveList = [];    // 初始化
                        eItem.isSel = true;    // 选中样式
                        scope.knowConfig.liveList.push(eItem);  // 添加到选中的list的集合中
                        scope.knowConfig.isShow = false;  // 关闭窗口
                    }
                    if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                        scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                    }
                    scope.onCallback();
                } else {   // 多选
                    eItem.isSel = true;  //选中样式             
                    angular.forEach(scope.knowConfig.liveList, function (data, index, array) {   //判断是不是已经选择了
                        if (data.externalId == eItem.externalId) {
                            scope.knowConfig.liveList.splice(index, 1);    // 如果已经有了那么删除掉  
                            eItem.isSel = false;  //选中样式                             
                        }
                    });
                    if (eItem.isSel) {
                        scope.knowConfig.liveList.push(eItem);
                    }
                }
            }
            //更具名称搜索
            scope.getListbyName = function () {
                scope.liveList = [];
                scope.getliveList();
            }
            // 初始化试卷列表
            scope.getliveList = function () {
                scope.liveLoading = true;
                console.log(scope.paramsLive);

                RTS.selectAll(scope.paramsLive).then(function (response) {
                    scope.liveLoading = false;
                    if (response.data.code == "0") {
                        scope.liveList = scope.liveList.concat(response.data.data.records);
                        scope.setItemSel();
                        if (scope.paramsLive.size * scope.paramsLive.current < response.data.data.total) {
                            scope.listmoreVisible = true;
                        } else {
                            scope.listmoreVisible = false;
                        }
                    } else {
                        console.log("请求失败");
                    }
                });
            }
            // 初始化选中
            scope.setItemSel = function () {
                angular.forEach(scope.knowConfig.liveList, function (data, index, array) {   //判断是不是已经选择了
                    angular.forEach(scope.liveList, function (edata, cindex, carray) { // 全部课程
                        if (data.roomId == edata.roomId) {
                            edata.isSel = true;  //选中样式                             
                        }
                    });
                });
            }
            scope.init();
            scope.getliveList();
        }
    }
} ])
/**************************************文件夹******这个块和文件的功能是一样的拆开是为了这个选择方式方便以后有调整****************************************/
 .directive("knowledgeSelectorFolder", ["sysUserInfo", "RequestTrainService", "Comm", function (sysUserInfo, RTS, Comm) {
     return {
         restrice: "AE",
         scope: false,
         templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_folder.html",
         link: function (scope, element, attr) {
             //初始化
             scope.init = function () {
                 scope.isOpen = true;
                 //文件属性标签
                 scope.extend = { "oldtag": RTS.getOldTagList(), "newtag": [{ "index": "0", "tagid": "0", "tagname": "全部标签", "tagcolor": "#icon-biaoqiantoumingquanbu"}] };
                 // 面包屑
                 scope.crumbsFList = [];
                 scope.fileLoading = false; //文件加载中
                 // 文件列表
                 scope.fileList = [];
                 // 排序条件
                 scope.serFileObj = { serName: "文件名称", serOrderBy: "" };
                 //标签筛选条件
                 scope.serTagObj = { serTagId: "0", serTagColor: "#icon-biaoqiantoumingquanbu", serTagName: "全部标签" };
                 scope.paramsFile = {
                     "userid": sysUserInfo.getuserinfo().user_ID,
                     "fid": "0",
                     "orgid": sysUserInfo.getuserinfo().organization_ID,
                     "powerLV": sysUserInfo.getuserinfo().powerLV,
                     "searchText": "",
                     "pageIndex": "1",
                     "pageSize": "20000",
                     "searchType": "1",
                     "tagid": "",
                     "fileType": "", //folder
                     "orderby": "",
                     "Shares": "", //0是1否
                     "type": 3  // 0为全部 1文档 2 视频 3 文件夹
                 };
                 
                 // 原标签
                 scope.oldTagLable = scope.extend.oldtag;
                 scope.oldTagLable.push(scope.extend.newtag[0]);
                 scope.userLableParam = { userid: sysUserInfo.getuserinfo().user_ID, orgid: sysUserInfo.getuserinfo().organization_ID };
                 // 获取个人标签
                 RTS.gettaglist(scope.userLableParam).then(function (tagData) {
                     if (tagData.errorcode == 0) {
                         //系统标签和用户标签组合
                         if (tagData.datas.length > 0) {
                             angular.forEach(scope.oldTagLable, function (tagInfo, index) {
                                 for (var i = 0; i < tagData.datas.length; i++) {
                                     if (tagData.datas[i].tagid == scope.oldTagLable[index].tagid) {
                                         scope.oldTagLable.splice(index, 1, tagData.datas[i]);
                                     }
                                 }
                             });
                         }
                     } else {
                         console.log("directive---标签加载失败！");
                     }
                 });
             }

             scope.tagScreenShow = false;
             // 标签筛选
             scope.tagCheckSer = function (tItem) {
                 scope.tagScreenShow = false;
                 if (tItem.tagid != scope.serTagObj.serTagId) {   // 判断是不是和之前的查询一致
                     scope.serTagObj.serTagId = tItem.tagid;
                     scope.serTagObj.serTagColor = tItem.tagcolor;
                     scope.serTagObj.serTagName = tItem.tagname;
                     if (tItem.tagid == "0") {
                         scope.paramsFile.tagid = "";
                     } else {
                         scope.paramsFile.tagid = tItem.tagid;
                     }
                     // 面包屑为空
                     scope.crumbsFList = [];
                     // 设置基本参数
                     scope.paramsFile.fid = "0";
                     scope.serFileObj = { serName: "文件名称", serOrderBy: "" };
                     // 发送请求
                     scope.getFileList();
                 }
             }
             // 筛选
             scope.upType = function (flag) {
                 scope.upDopSort = false;
                 //判断是不是上次的排序
                 if (scope.paramsFile.searchType == flag) {
                     if (scope.paramsFile.orderby == "") {  //判断排列顺序 如果再次点击则换序
                         scope.paramsFile.orderby = "desc";  //请求参数
                         scope.serFileObj.serOrderBy = "desc";
                     } else {
                         scope.paramsFile.orderby = "";  // 请求参数
                         scope.serFileObj.serOrderBy = "";
                     }
                 } else {
                     switch (flag) {
                         case 1: // 文件名称                   
                             scope.serFileObj.serName = "文件名称";
                             scope.paramsFile.searchType = 1;
                             break;
                         case 3: //文件创建时间
                             scope.serFileObj.serName = "文件创建时间";
                             scope.paramsFile.searchType = 3;
                             break;
                         case 4: //文件修改时间
                             scope.serFileObj.serName = "文件修改时间";
                             scope.paramsFile.searchType = 4;
                             break;
                     }
                     scope.paramsFile.orderby = "";     // 请求参数
                     scope.serFileObj.serOrderBy = ""; //页面                 
                 }
                 scope.getFileList();    //发送请求
             }
             //获取文件对应的标签
             scope.getFileTagList = function (tagIds) {
                 var tagList = [];
                 if (tagIds != undefined && tagIds != "") {
                     angular.forEach(scope.extend.oldtag, function (tagInfo, index) {
                         if (tagIds.indexOf(scope.extend.oldtag[index].tagId) >= 0) {
                             if (tagList.length >= 3) {
                                 //break;   前台只显示3个标签图标
                             } else {
                                 tagList.push(scope.extend.oldtag[index]);
                             }
                         }
                     });
                 }
                 return tagList;
             }
             //回车
             scope.fileEnter = function (e) {
                 var keycode = window.event ? e.keyCode : e.which;
                 if (keycode == 13) {
                     scope.getFileList();
                 }
             }
             // 选择文件/进入文件夹
             scope.fileCheckClick = function (fItem, flag) {
                 if (flag) { // 文件夹
                     scope.paramsFile.fid = fItem.upId;
                     // 查找在没有在
                     var isVisi = -1;
                     angular.forEach(scope.crumbsFList, function (data, index, arr) {
                         if (data.upId == fItem.upId) { //之前进入过此文件夹
                             isVisi = index;
                         }
                     });
                     if (isVisi == -1) {
                         scope.crumbsFList.push(fItem);
                     } else {
                         // 删除面包屑                        
                         scope.crumbsFList.splice(isVisi + 1, scope.crumbsFList.length - (isVisi + 1));
                     }
                     scope.getFileList();
                 } else {  //文件
                     if (!scope.knowConfig.ksmMore) {     //单选
                         if (scope.knowConfig.windowSize == "mini") {// 小窗口
                             if (scope.knowConfig.ksmList != null || scope.knowConfig.ksmList.length > 0) { // 判断有没有选择
                                 if (scope.knowConfig.ksmList[0].upId == fItem.upId) { //判断选择的和已选的是不是同一个
                                     scope.knowConfig.ksmList = [];    // 初始化
                                     fItem.isSel = false;    // 选中样式
                                 } else {// 不是重新添加
                                     fItem.isSel = true;    // 选中样式
                                     scope.knowConfig.ksmList = [];    // 初始化
                                     scope.knowConfig.ksmList.push(fItem);  // 添加到选中的list的集合中                                                    
                                 }
                             } else {//如果没有选择
                                 fItem.isSel = false;    // 选中样式
                                 scope.knowConfig.ksmList = [];    // 初始化
                                 scope.knowConfig.ksmList.push(fItem);  // 添加到选中的list的集合中                                                    
                             }
                         } else {  //标准窗口
                             scope.knowConfig.ksmList = [];    // 初始化
                             fItem.isSel = true;    // 选中样式
                             scope.knowConfig.ksmList.push(fItem);  // 添加到选中的list的集合中                         
                             scope.knowConfig.isShow = false;  // 关闭窗口
                         }
                         if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                             scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                         }
                         scope.onCallback();
                     } else {   // 多选
                         fItem.isSel = true;  //选中样式             
                         angular.forEach(scope.knowConfig.ksmList, function (data, index, array) {   //判断是不是已经选择了
                             if (data.upId == fItem.upId) {
                                 scope.knowConfig.ksmList.splice(index, 1);    // 如果已经有了那么删除掉  
                                 fItem.isSel = false;  //选中样式                             
                             }
                         });
                         if (fItem.isSel) {
                             scope.knowConfig.ksmList.push(fItem);
                         }
                     }
                 }
             }
             // 回到主目录
             scope.selectAllFile = function (fid) {
                 scope.paramsFile.fid = fid;
                 scope.serFileObj = { serName: "文件名称", serOrderBy: "" };
                 //标签筛选条件
                 scope.paramsFile.tagid = "";
                 scope.serTagObj = { serTagId: "0", serTagColor: "#icon-biaoqiantoumingquanbu", serTagName: "全部标签" };
                 //面包屑操作
                 scope.crumbsFList = [];

                 scope.getFileList();
             }
             // 获取文件列表 queryFileType    getFileList       
             scope.getFileList = function () {
                 scope.fileLoading = false;
                 RTS.queryFileType(scope.paramsFile).then(function (response) {
                     scope.fileLoading = false;
                     if (response.errorcode == "0") {
                         scope.fileList = response.datas;
                         scope.setItemSel();
                     } else {
                         console.log("请求数据有误！");
                     }
                 }, function callback() {
                     console.log("请求连接不上服务器");
                 });
             }
             // 初始化选中
             scope.setItemSel = function () {
                 angular.forEach(scope.knowConfig.ksmList, function (data, index, array) {   //判断是不是已经选择了
                     angular.forEach(scope.fileList, function (edata, cindex, carray) { // 全部文件
                         if (data.upId == edata.upId) {
                             edata.isSel = true;  //选中样式                             
                         }
                     });
                 });
             }
             scope.init();
             scope.getFileList();
         },
         controller: function ($scope, $document) {
             //点击非指定区域，关闭显示层
             $document.bind("click", function (evt) {
                 var evt = window.event ? window.event : evt,
                target = evt.srcElement || evt.target;
                 var sortFlag = false; // 排序
                 var tagFlag = false; // 标签
                 if ($document[0].getElementById("sortSerList") != null) {
                     sortFlag = $document[0].getElementById("sortSerList").contains(target);                    // 包含排序                
                 }
                 if ($document[0].getElementById("tagSerList") != null) {
                     tagFlag = $document[0].getElementById("tagSerList").contains(target);                    // 包含排序                
                 }
                 if (!sortFlag) {// 不在排序中                   
                     $scope.$apply(function () {
                         $scope.upDopSort = false;
                     });
                 }
                 if (!tagFlag) {   //不在标签中
                     $scope.$apply(function () {
                         $scope.tagScreenShow = false;
                     });
                 }
             });
         }
     }
 } ])
/***********************************************题库***************************************************/
 .directive("knowledgeSelectorQuestion", ["$timeout", "sysUserInfo", "RequestTrainService", "Comm", "Msg", function ($timeout, sysUserInfo, RTS, Comm, Msg) {
     return {
         // ksqList 题库列表  ksqMore 是否多选
         restrice: "AE",
         scope: false,
         templateUrl: "/system/directive/train/knowledgeselector/knowledge_selector_question.html",
         link: function (scope, element, attr) {
             // 初始化
             scope.init = function () {
                 scope.queList = []; // 题目集合
                 scope.allQueCount = 0;  //已选的题目个数用于计数按钮的
                 scope.queCount = 0; // 总数
                 scope.paramsQue = {
                     userid: sysUserInfo.getuserinfo().user_ID,
                     orgid: sysUserInfo.getuserinfo().organization_ID,
                     powerLV: sysUserInfo.getuserinfo().powerLV,
                     knowledge_Id: "", // 知识结构筛选
                     pageIndex: 1,   // 当前页
                     pageSize: 20,    // 查询的条数
                     orderbyfield: 2, // 排序的内容（1 题目名称 2 上传时间）
                     orderby: "asc",  // 排序
                     paper_id: "", //试卷id
                     difficulty: "", // 题目难度
                     questions_Type: "", // 题目类型
                     create_Name: "", // 出题人
                     question_name: "" // 题目名称
                 };
             }
             //全选
             scope.checkAll = function () {
                 var isQueSel = true;
                 // 判断是全选还是取消全选
                 if (scope.knowConfig.ksqList != null && scope.allQueCount >= scope.queList.length) {
                     isQueSel = false;
                 }
                 // 绑定数据
                 //scope.knowConfig.ksqList.length = 0;   // 必须这样清空或splice
                 // 这里必须push 不然数据不能正常使用双向绑定                
                 angular.forEach(scope.queList, function (data, index, arr) {
                     if (isQueSel) {
                         var isQue = true;
                         // 判断存不存在
                         angular.forEach(scope.knowConfig.ksqList, function (qdata, index, arr) {
                             if (data.questions_Id == qdata.questions_Id) {
                                 isQue = false;
                             }
                         });
                         if (isQue) {
                             scope.knowConfig.ksqList.push(data);
                             scope.allQueCount++; // 为了安全写这个地方
                         }
                     } else {//全部不选中的情况删除当前的
                         scope.allQueCount--;   // 为了安全写这个地方
                         angular.forEach(scope.knowConfig.ksqList, function (qdata, index, arr) {
                             if (data.questions_Id == qdata.questions_Id)
                                 scope.knowConfig.ksqList.splice(index, 1);
                         });
                     }
                     data.isSel = isQueSel;  //全部选中/不选中   设置样式
                 });
                 if (isQueSel) {
                     Msg.success("已添加", "当前全部题目");
                 } else {
                     Msg.info("已移除", "当前全部题目");
                 }
             }
             // 单选
             scope.checkSingle = function (qItem) {
                 if (!scope.knowConfig.ksqMore) {     //单选
                     if (scope.knowConfig.windowSize == "mini") {// 小窗口
                         if (scope.knowConfig.ksqList != null || scope.knowConfig.ksqList.length > 0) { // 判断有没有选择
                             if (scope.knowConfig.ksqList[0].questions_Id == qItem.questions_Id) { //判断选择的和已选的是不是同一个
                                 scope.knowConfig.ksqList = [];    // 初始化
                                 qItem.isSel = false;    // 选中样式
                             } else {// 不是重新添加
                                 qItem.isSel = true;    // 选中样式
                                 scope.knowConfig.ksqList = [];    // 初始化
                                 scope.knowConfig.ksqList.push(qItem);  // 添加到选中的list的集合中                                                    
                             }
                         } else {//如果没有选择
                             qItem.isSel = false;    // 选中样式
                             scope.knowConfig.ksqList = [];    // 初始化
                             scope.knowConfig.ksqList.push(qItem);  // 添加到选中的list的集合中                                                    
                         }
                     } else {  //标准窗口
                         scope.knowConfig.ksqList = [];    // 初始化
                         qItem.isSel = true;    // 选中样式
                         scope.knowConfig.ksqList.push(qItem);  // 添加到选中的list的集合中                     
                         scope.knowConfig.isShow = false;  // 关闭窗口
                     }
                     if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                         scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                     }
                     scope.onCallback();
                 } else {   // 多选
                     qItem.isSel = true;  //选中样式             
                     angular.forEach(scope.knowConfig.ksqList, function (data, index, array) {   //判断是不是已经选择了
                         if (data.questions_Id == qItem.questions_Id) {
                             scope.knowConfig.ksqList.splice(index, 1);    // 如果已经有了那么删除掉  
                             qItem.isSel = false;  //选中样式                             
                         }
                     });
                     if (qItem.isSel) {
                         scope.allQueCount++;
                         scope.knowConfig.ksqList.push(qItem);
                         Msg.success("已添加题目", qItem.question_name);
                     } else {
                         scope.allQueCount--;
                         Msg.info("已移除题目", qItem.question_name);
                     }
                 }
             }
             // 删除单独抽离出来 (性能略低) flag true 是否删除全部题目
             scope.delSelQue = function (qItem) {
                 //修改已选的
                 angular.forEach(scope.queList, function (data, index, array) {   //判断是不是已经选择了                      
                     if (data.questions_Id == qItem.questions_Id) {
                         scope.allQueCount--;
                         data.isSel = false;
                     }
                 });
                 //删除选中集合中的题目
                 angular.forEach(scope.knowConfig.ksqList, function (data, index, array) {   //判断是不是已经选择了
                     if (data.questions_Id == qItem.questions_Id) {
                         scope.knowConfig.ksqList.splice(index, 1);    // 如果已经有了那么删除掉                                                            
                     }
                 });
                 Msg.info("已移除题目", qItem.question_name);
             }
             // 删除全部选中的
             scope.delSelAll = function () {
                 scope.knowConfig.ksqList = [];
                 //scope.allQueCount =0; //全部移除了那就为0
                 angular.forEach(scope.queList, function (data, index, array) {  // 全部设置flase                          
                     scope.allQueCount--;
                     data.isSel = false;
                 });
                 Msg.info("已移除", "全部题目");
             }
             // 回车筛选
             scope.queEnter = function (e) {
                 var keycode = window.event ? e.keyCode : e.which;
                 if (keycode == 13) {
                     scope.paramsQue.pageIndex = 1; // 重新初始化参数
                     scope.getQueList();
                 }
             }
             // 翻页获取分开获取吧
             scope.getPageQueList = function () {
                 if (scope.queCount == scope.queList.length)
                     Msg.info("提示", "已经是全部的数据了！");
                 scope.paramsQue.pageIndex++;
                 scope.ksqPageLoading = true;
                 RTS.findQuestionBySelectAndTrimToKnowledge(scope.paramsQue).then(function (response) {
                     scope.ksqPageLoading = false;
                     if (response.errorcode == "0") {
                         scope.queList = scope.queList.concat(response.datas);   // 追加到后面
                         scope.setItemSel(response.datas);   //判断选择
                     } else {
                         consoleo.log("获取题目数据失败！" + response.errorcode);
                     }
                 });
             }
             // 获取全部题目的信息
             scope.getQueList = function () {
                 scope.ksqLoading = true;
                 scope.paramsQue.pageIndex = 1; // 分页
                 RTS.findQuestionBySelectAndTrimToKnowledge(scope.paramsQue).then(function (response) {
                     scope.ksqLoading = false;
                     if (response.errorcode == "0") {
                         scope.allQueCount = 0; //初始化已选个数
                         scope.queList = response.datas;
                         scope.queCount = response.numCount; // 题目总数
                         scope.setItemSel(scope.queList);
                     } else {
                         consoleo.log("获取题目数据失败！" + response.errorcode);
                     }
                 });
             }
             // 初始化选中
             scope.setItemSel = function (queList) {
                 angular.forEach(scope.knowConfig.ksqList, function (data, index, array) {   //判断是不是已经选择了
                     angular.forEach(queList, function (qdata, cindex, carray) { // 全部题目                              
                         if (data.questions_Id == qdata.questions_Id) {
                             scope.allQueCount++;
                             qdata.isSel = true;  //选中样式                             
                             data = qdata; // 防止传入的数据不是完整的重新赋值一下
                         }
                     });
                 });
             }
             // 确定选题
             scope.okQuestion = function () {
                 if (!Comm.isNull(scope.knowConfig.callbackParams)) {//回调参数判断
                     scope.knowConfig.callbackParams.isClose = false;    // 回调通知 不是点击关闭按扭
                 }
                 scope.onCallback();
             }
             scope.init();
             scope.getQueList();
             /**************************************知识结构*********************************************/
             // 配置参数
             scope.nodeStructure = {
                 menu: ["structure"],
                 kssMore: false, //知识结构 是否多选
                 kssList: [],    // 知识结构选中列表                               
                 isShow: false,  // 显示知识选择器
                 callbackParams: { // 回到参数
                     isClose: true // 默认通过窗口关闭
                 }
             };
             // 回调方法
             scope.onStructureToQuetion = function () {
                 if (!scope.nodeStructure.callbackParams.isClose) {  //如果没有通过窗口关闭那么就进行查询
                     scope.paramsQue.question_name = "";    // 知识结构查询的时候不进行课程名称的筛选
                     scope.paramsQue.knowledge_Id = scope.nodeStructure.kssList[0].knowledge_Id;         // 传入知识结构id                                                        
                     // 发送请求
                     scope.getQueList();
                 }
             }
             // 撤销知识结构筛选
             scope.qStructureSerchClose = function () {
                 scope.paramsQue.question_name = "";    // 知识结构查询的时候不进行课程名称的筛选
                 scope.nodeStructure.kssList = [];       // 初始化
                 scope.paramsQue.knowledge_Id = ""; // 传入知识结构id                                                        
                 // 发送请求
                 scope.getQueList();
             }
             //打开知识结构选择器
             scope.openSingleStructure = function () {
                 scope.nodeStructure.isShow = true;
             }
             /************************筛选：类型***************************/
             // 筛选 1 单选 2 多选 3 判断 4 问答 5 填空 6 B型题 7 综合题
             scope.questionTypeName = "类型";
             scope.selQuestionType = function (ind) {
                 scope.paramsQue.questions_Type = ind;
                 switch (ind) {
                     case 1:
                         scope.questionTypeName = "单选题";
                         break;
                     case 2:
                         scope.questionTypeName = "多选题";
                         break;
                     case 3:
                         scope.questionTypeName = "判断题";
                         break;
                     case 4:
                         scope.questionTypeName = "问答题";
                         break;
                     case 5:
                         scope.questionTypeName = "填空题";
                         break;
                     case 6:
                         scope.questionTypeName = "B型题";
                         break;
                     case 7:
                         scope.questionTypeName = "综合题";
                         break;
                    case 8:
                         scope.questionTypeName = "找错题";
                         break;
                     case 0:
                         scope.questionTypeName = "类型";
                         scope.paramsQue.questions_Type = "";
                         break;
                 }
                 // 发送请求
                 scope.getQueList();
             }
             /************************筛选：难度***************************/
             // 筛选 1 简单 2一般 3困难
             scope.difficultyName = "难度";
             scope.selDifficulty = function (ind) {
                 scope.paramsQue.difficulty = ind;
                 switch (ind) {
                     case 1:
                         scope.difficultyName = "简单";
                         break;
                     case 2:
                         scope.difficultyName = "一般";
                         break;
                     case 3:
                         scope.difficultyName = "困难";
                         break;
                     case 0:
                         scope.difficultyName = "难度";
                         scope.paramsQue.difficulty = "";
                         break;
                 }
                 // 发送请求
                 scope.getQueList();
             }
         }
     }
 } ]);
 
